,,高效的使用 Response.Redirect解决一些不必要的问题

,,高效的使用 Response.Redirect解决一些不必要的问题 本文主要介绍如何高效地使用Response。重定向解决一些不必要的问题。有需要的朋友可以参考一下。 简介: 我正在评估一个ASP.NET网络项目的申请。它有一些可扩展性问题。意思是当网站访问量增加的时候。系统会变慢。当我查看申请记录时。我发现了很多ThreadAbortException。这个应用程序使用了大量的响应。重定向(是的,endResponse=true),这是可伸缩性问题的根源。在响应中endResponse=false。重定向,这个问题就解决了,但是会在应用中造成一些奇怪的问题。因为应用程序会假设响应。重定向将在当前页面停止执行。此外,您需要处理一些安全风险,因为您的应用程序假定页面事件永远不会被重定向。在这篇文章中,我将告诉一个简单的方法来解决这些问题,并取得良好的性能。 描述: 例如,如果您有一个web表单,您需要验证一些条件,并在条件不匹配时重定向用户进行跳转。复制代码如下:protected void page _ load(object sender,eventargs e) {var condition=.如果(!条件){响应。重定向(' some page . aspx ');}} protected void BTN save _ click(对象发送方,eventargs e){//在此保存数据}这是好的,但是会影响可伸缩性。因为它将终止线程池。现在,只需将response . redirect(' unauthorized . aspx ')替换为response . redirect(' unauthorized . aspx ',false)。这将解决线程终止的问题,但不会停止当前页面的生命周期。也就是说,您需要确保btnSave_Click事件(以及所有其他页面时间),因为只要btnSave_Click事件被允许执行,任何人都可以轻松地发送POST请求。为了解决这个问题,我建议使用RedirectUser扩展方法。复制代码如下:公共静态类httpresponse扩展{公共静态void重定向用户(this httpresponse,string URL){ if(response . isrequestbeingredirected)返回;回应。重定向(url,false);var context=HttpContext。当前;如果(上下文!=null) { context。application instance . complete request();} } }公共分部类WebForm : System。web . ui . Page { protected void Page _ Load(object sender,EventArgs e) { var condition=.如果(!条件){响应。redirect user(' unauthorized . aspx ');} } protected void btnSave_Click(对象发送方,EventArgs e) { if(响应。IsRequestBeingRedirected){ return;} //在此保存数据}}使用RedirectUser的第一个好处是,它会首先使用response . redirect(with end response=false)方法,这种方法对于应用程序来说具有很好的可扩展性。第二个好处是,在你多次调用这个方法之后,它不会覆盖之前的响应。重定向(如果有)。第三个好处是它会调用HTTP应用。CompleteRequest处理ASP.NET运行时传递的所有事件,并过滤HTTP管道信息(不是页面生命周期管道信息)。另外需要注意检查btnSave_Click事件中的response . isrequestbeingredirected。也希望大家能检查一下response . isrequestbeingredirected中的所有内部控件,复制代码如下:formid=' form 1 ' runat=' server ' % if(!回应。IsRequestBeingRedirected){ % ASP:Button ID=' BTN Save ' runat=' server ' Text=' Save ' OnClick=' BTN Save _ Click '/%-所有其他控件-% %-所有其他控件-% %-所有其他控件-% % % } %/形成另一个你需要注意的事情,当你使用一个复杂的控件(像GridView,RadGrid等)有选择,插入,更新,删除事件的功能时,当response . isrequestbeingredirected为true时,必须取消这些事件的操作(插入、更新或删除)。以下是复制代码示例:Protected Void GridView 1 _ RowEditing(对象发送方,GridViewEditEventArgs e) { if(响应。IsRequestBeingRedirected){ e . Cancel=true;返回;}}摘要: 在本文中,我将向您展示如何使用Response。重定向我也发现了一些风险问题。回应。可以采用重定向优化和技术来降低风险。我也希望你喜欢这篇文章。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • word文档无法编辑是怎么回事-
  • 华为手机怎么设置返回键(华为手机下面的三个按键设置方法)
  • lumia950怎么样(Lumia950体验分享)
  • otg连接是什么意思(OTG连接手机方法)
  • 笔记本触摸板怎么右键(笔记本电脑触控板手势操作设置)
  • 真我x7怎么样(realme X7 系列体验)
  • 苹果的A16处理器有多强(苹果的A16处理器的介绍)
  • 小米互传怎么用(小米手机的连接与共享教程)
  • 怎么设置电脑桌面图标自动对齐 设置电脑桌面自动整理图标的方法
  • 宽带错误651最简单解决方法(处理宽带错误651的措施)
  • 大学生手机有什么推荐(大学生换手机攻略)
  • 天玑1100和骁龙778g哪个好(骁龙778G、天玑900、天玑1100购选建议)
  • yum update 升级报错的解决办法
  • Windows10禁用屏保教程
  • 连接wifi显示无互联网连接怎么办(无线连上了却不能上网处理绝招)
  • 留言与评论(共有 条评论)
       
    验证码: