2KB项目,专业的源码交易网站 帮助 收藏 每日签到

高效的运用 Response.Redirect

  • 时间:2019-05-14 16:49 编辑:2KB 来源:2KB.COM 阅读:414
  • 扫一扫,手机访问
  • 分享
摘要: 英文原文:Usi
英文原文:Using Response.Redirect Effectively

引见:

我正在评价一个 ASP.NET Web 项目使用。它有一些可扩大性问题。意味着当网站拜访量增加的时分。系统将会变得迟缓。当我检查使用日记。我找到了大量的 ThreadAbortException. 这个使用大量的运用了 Response.Redirect (是的 endResponse= true),这个就是可扩大性问题的本源。经过endResponse = false 在Response.Redirect将会处理这个问题. 但如许做会招致使用顺序呈现一些奇异的问题。由于使用顺序将假定在 Response.Redirect 将在以后页面中止履行.除此以外你需求处置一些平安隐患,由于你的使用顺序是假定页面事情永久不会履行重定向以后。在这篇文章中,我将讲述一个容易的办法来处理这些问题,并获得杰出功能

阐明:

比如说你有一个web表单,需求验证一些前提并在前提不符时重定向用户跳转。

protected void Page_Load(object sender, EventArgs e)
        {
            var condition = ......;
            if (!condition)
            {
                Response.Redirect("SomePage.aspx");
            }
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            // Save Data Here
        }

如许做很好,但这会影响可扩大功能。由于它将会终止线程池.如今,只需求用Response.Redirect("Unauthorized.aspx", false)交换Response.Redirect("Unauthorized.aspx") . 这将处理线程终止的问题,但不会中止以后页面熟命周期. 也就是说,你有需求确保 btnSave_Click 事情(和一切其他页面工夫)由于只需答应btnSave_Click事情履行任何人都可以很轻易地发送POST恳求. 为了处理这个问题我引荐运用RedirectUser扩大办法。

public static class HttpResponseExtensions
    {
        public static void RedirectUser(this HttpResponse response, string url)
        {
            if (response.IsRequestBeingRedirected)
                return;
            response.Redirect(url, false);
            var context = HttpContext.Current;
            if (context != null)
            {
                context.ApplicationInstance.CompleteRequest();
            }
        }
    }
    public partial class WebForm : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var condition = .....;
            if (!condition)
            {
                Response.RedirectUser("Unauthorized.aspx");
            }
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            if (Response.IsRequestBeingRedirected)
            {
                return;
            }
            // Save Data Here
        }
    }
运用 RedirectUser 第一个益处是它将起首运用关于使用顺序具有杰出扩大性的Response.Redirect(with endResponse= false) 办法。.第二个益处就是在你屡次挪用这个办法后它不会掩盖先前的Response.Redirect(假如有的话). 第三个益处是它会挪用  HttpApplication.CompleteRequest用来处置  ASP.NET运转时一切经过的事情和过滤 HTTP 管道信息(不是页面熟命周期管道信息).别的你需求留意在 btnSave_Click事情中反省 Response.IsRequestBeingRedirected.我也盼望你把一切的外部把持放到 Response.IsRequestBeingRedirected 反省,
<form id="form1" runat="server">
        <% if(!Response.IsRequestBeingRedirected){ %>
            <asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" />
            <%--All the Other Controls--%>
            <%--All the Other Controls--%>
            <%--All the Other Controls--%>
        <%} %>
    </form>
另外一件你需求留意的工作,当你运用一个庞杂的把持(相似GridView, RadGrid, etc)这些具有 选择,拔出,更新和删除事情时。 当 Response.IsRequestBeingRedirected 为true时,你必需撤消操作(拔出,更新或删除) 这些事情,下面是一个例子
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            if (Response.IsRequestBeingRedirected)
            {
                e.Cancel = true;
                return;
            }
        }

总结:

在这篇文章里,我向您展现怎么运用Response.Redirect . 我异样也发明了一些风险问题。可以采取Response.Redirect优化和技术以下降风险 .也异样盼望你爱好这篇文章。 

本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协议,假如我们的任务有进犯到您的权益,请实时联络我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部