我在ASP.NET页面中遇到“线程被中止”异常。我根本没有使用任何Response.Redirect / Server.Transfer方法。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
错误解决方案正在使用
Response.Redirect(URL, False)
这将导致不到当前页面,但请注意这可能会导致问题,因为页面的其余部分将执行并可能导致登录绕过以及类似的安全和性能问题。
编辑:显然你没有使用Response.Redirect,你不能用Try Catch捕获AbortThreadExecution,这意味着这个答案现在完全没用了:)
虽然能够得到答案,但您需要学习如何提问。您需要提供以下信息:
答案 1 :(得分:1)
如果在代码执行时关闭或强行重新启动Web应用程序,则会发生这种情况。我已经看到当您的Web应用程序将文件写入托管它的Web目录时会发生这种情况,导致重新编译Web应用程序。
答案 2 :(得分:0)
错误强>: 威胁已经被清除了。在System.Web.HttpResponse.End()
的System.Threading.Thread.Abort(Object stateInfo)上的System.Threading.Thread.AbortInternal()处如果您使用Response.End,Response.Redirect或Server.Transfer
,则会发生此错误<强>原因强>: Response.End方法结束页面执行并将执行转移到应用程序的事件管道中的Application_EndRequest事件。不执行Response.End之后的代码行。
Response.Redirect和Server.Transfer方法中出现此问题,因为两个方法都在内部调用Response.End。
解决/溶液强>:
您可以使用try-catch语句来捕获此异常
或
对于Response.End,调用HttpContext.Current.ApplicationInstance.CompleteRequest方法而不是Response.End来绕过代码执行到Application_EndRequest事件。 对于Response.Redirect,使用一个重载,Response.Redirect(String url,bool endResponse),它为endResponse参数传递false以禁止对Response.End的内部调用。例如: 例如:Response.Redirect(“nextpage.aspx”,false); 如果使用此变通方法,则执行Response.Redirect之后的代码。 对于Server.Transfer,请改用Server.Execute方法。