Thread was being aborted after response.redirect("Default.aspx")

时间:2015-07-31 20:39:42

标签: asp.net .net vb.net

I am getting this error message:

_message = "Thread was being aborted."

when I do

Response.Redirect("Default.aspx")

Can anyone help me?

4 个答案:

答案 0 :(得分:0)

This is normal behavior. See the documentation for this method. If you ever suspect something wrong with .NET, then always check MSDN first.

答案 1 :(得分:0)

类似的问题:

Is Response.End() considered harmful?

Per Mason的链接:“重定向调用End,在完成时抛出ThreadAbortException异常。”

而不是正确引发异常的response.End(),我认为以下内容可能会解决问题:

// Prevents any other content from being sent to the browser
response.SuppressContent = True;

// Directs the thread to finish, bypassing additional processing  
HttpContext.Current.ApplicationInstance.CompleteRequest();

我们不会在这里看到为什么会这种情况发生的大局:

(1)我们永远不应该首先在Response对象上调用End()方法。唯一的原因仍然是当前API的一部分是与旧ASP的兼容性。

(2)当我们调用End()时,我相信我们正在杀死运行Web表单的相同进程,这就是微软首先提出异常的原因。

答案 2 :(得分:0)

您可以执行以下操作:

Response.Redirect("Default.aspx", false);
return;

这不会结束响应,因此不会抛出ThreadAbortException。调用return确保不会不必要地执行以下逻辑。

msdn链接https://msdn.microsoft.com/en-us/library/a8wa7sdt(v=vs.110).aspx说明如下:

将endResponse设置为false,然后调用CompleteRequest方法。如果为endResponse参数指定true,则此方法为原始请求调用End方法,该方法在完成时抛出ThreadAbortException异常。此异常对Web应用程序性能有不利影响,这就是建议为endResponse参数传递false的原因。

答案 3 :(得分:0)

您需要发送“false”以及要重定向用户的路径。类似于:Response.Redirect("Default.aspx", false);