为什么我在设置404响应代码时得到System.Threading.ThreadAbortException ?
本文关键字:System Threading ThreadAbortException 代码 设置 响应 为什么 | 更新日期: 2023-09-27 18:12:21
我有以下代码在我的应用程序。
如果_showConfiguration为null且Response对象不为null,则状态码设置为404,响应结束。
前面的开发人员就是这样写的。现在,当我们创建一个包含ShowConfiguration对象的新页面时,它总是抛出System.Threading.ThreadAbortException。
我想知道是什么引起的。请建议。
感谢public ShowConfiguration ShowConfig
{
get
{
if (_showConfiguration == null)
{
_showConfiguration = ShowConfigurationCache.GetShowByAliasPath(_aliasPath);
if (_showConfiguration == null && Response != null)
{
Response.Clear();
Response.StatusCode = 404;
Response.End();
}
}
return _showConfiguration;
}
}
因为这是ASP.NET中响应的本质。甚至做一个回应。重定向会导致ThreadAbortException,因为它已经完成了对当前请求的处理。为了避免这种情况,将第二个参数设为false,这将避免这种情况。见:https://support.microsoft.com/en-us/kb/312629。
当然,这取决于你的意图,但默认情况下,这是ASP.NET中的行为。
这也可以给你一些关于Response的背景知识。结束:
http://blogs.msdn.com/b/tmarq/archive/2009/06/25/correct-use-of-system-web-httpresponse-redirect.aspx摘要表示响应。End方法结束当前页面的执行,并将其执行移动到应用程序事件管道中的Application_EndRequest事件。Response之后的任何一行代码。End不执行,但会抛出异常。
你应该做httpcontext . current . applicationinstance . completerrequest。但是,你看到的行为是正常的和预期的