Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 响应。重定向和线程被中止错误?_Asp.net_Boolean_Redirect_Response.redirect - Fatal编程技术网

Asp.net 响应。重定向和线程被中止错误?

Asp.net 响应。重定向和线程被中止错误?,asp.net,boolean,redirect,response.redirect,Asp.net,Boolean,Redirect,Response.redirect,我有一个错误线程被中止。,今天下午在我的错误日志中 导致此错误的代码是: Response.Redirect("Login.aspx", true); 如果我将bool值更改为false,则错误日志将变为空,并且此错误再次出现,但程序停止工作 如果我保留它,我会像讨厌一样得到这个错误 我想知道使用Response.Redirect传递true作为endResponse参数的值的替代方法。我捕获此异常并接受它,因为ASP.NET将异常用于流控制,而不是用于异常情况 try { // Do

我有一个错误线程被中止。,今天下午在我的错误日志中

导致此错误的代码是:

Response.Redirect("Login.aspx", true);
如果我将
bool
值更改为
false
,则错误日志将变为空,并且此错误再次出现,但程序停止工作

如果我保留它,我会像讨厌一样得到这个错误


我想知道使用
Response.Redirect
传递
true
作为
endResponse
参数的值的替代方法。

我捕获此异常并接受它,因为ASP.NET将异常用于流控制,而不是用于异常情况

try
{
    // Do stuff.
}
catch(ThreadAbortException)
{
    // Do nothing. ASP.NET is redirecting.
    // Always comment this so other developers know why the exception 
    // is being swallowed.
}
catch(OtherExceptionTypes ex)
{
    // Log other types of exception.
}
你可以这样改变 重定向(“Login.aspx”,false)
然后它将不会中止。

响应.重定向(url)
线程中止异常解决方案中所述:

调用时会引发ThreadAbortException
Response.Redirect(url)
,因为系统中止了对 将重定向发送到响应后的当前网页线程 小溪
Response.Redirect(url)
实际上调用了
Response.End()
在内部,调用
Thread.Abort()
的是
Response.End()
使堆栈冒泡以结束线程。在极少数情况下
调用
Response.End()
实际上并不调用
Thread.Abort()
,而是 而是调用
HttpApplication.CompleteRequest()


或者简单地移动
Response.Redirect(“~/Membership/UserRegistration.aspx”)退出Try/Catch块。

对于要重定向的所有捕获到的错误,按如下所示创建一个从Try-Catch中发送的“GoTo”:

    Try 

       'do stuff

    Catch ex As Exception

        'logging
        GoTo MyRedirection

    End Try

    'Prevent redirection in case of no errors
    Exit Sub

MyRedirection:
    Response.Redirect("login.aspx", True)

这既不会导致线程中止,也不需要多个捕获。

签出响应。重定向将调用响应。在内部结束时,可以使用“false”(Response.Redirect(Login.aspx,false);)。但它不应导致程序停止工作。如果重定向后正在处理其他逻辑,则它可以停止程序工作。如果引发异常,则无法处理这些逻辑。@wizzard。。它可以工作,但不允许在页面上携带我的会话变量。@谢谢Mike。站点链接非常有用。如果我使用线程异常而不是普通异常,那么错误日志中将打印什么?如果捕获并吞下异常,则什么都没有,因为没有异常会到达记录它的点。听起来你也需要了解异常是如何工作的。对不起,我没有在我的家庭系统中安装.net。所以我有一个疑问。OtherExceptionTypes的名称空间是什么?直到您可以将多个catch()附加到一个try块