相关疑难解决方法(0)

"EndResponse"可以提高ASP.Net页面的性能

Response.Redirect我的员工页面中有一个.它重定向到Salary页面.

Response.Redirect ("Salary.aspx");
Run Code Online (Sandbox Code Playgroud)

它工作正常,直到我添加异常处理如下.

try
{
   Response.Redirect ("Salary.aspx");
}
catch(Exception ex)
{
//MyLog();
    throw new Exception();
}

//Remaining code in event handler
Run Code Online (Sandbox Code Playgroud)

这引起了一个新的异常,说"线程正在被中止".我开始知道可以通过将endResponse重定向设置为false 来避免这种情况.

Response.Redirect(url, false);
Context.ApplicationInstance.CompleteRequest();
Run Code Online (Sandbox Code Playgroud)

新异常的解释:它总是抛出异常但由框架处理.因为我添加了一个try..catch它被捕到了(我正在抛出一个新的异常)

注意:CompleteRequest确实绕过了其他HTTP过滤器和模块,但它不会绕过当前页面生命周期中的其他事件

注意:Response.Redirect将此异常抛出到当前页面的结束处理.ASP .Net本身处理此异常并调用ResetAbort继续处理.

  1. "将endResponse设置为false"是否可以提高性能,因为不会抛出异常?
  2. "将endResponse设置为false"是否会降低性能,因为页面生命周期事件未终止?

陷阱

  1. 如果将endResponse设置为false,则将执行eventhandler中的剩余代码.因此,我们需要if检查剩余的代码(检查:是否未满足重定向条件).

参考

  1. 为什么Response.Redirect导致System.Threading.ThreadAbortException?
  2. ASP.NET异常"线程被中止"导致方法退出

c# asp.net health-monitoring

10
推荐指数
1
解决办法
939
查看次数

标签 统计

asp.net ×1

c# ×1

health-monitoring ×1