Response.Redirect导致"对象移动到此处"

gkr*_*ers 35 c# asp.net exception abort

我正在开发一个C#ASP.NET页面,通常最终会重定向到"file:"URL.在大多数情况下,这似乎在大多数情况下工作正常,但偶尔(并且,在我的测试系统上,显然总是)而不是重定向到文件我得到一个文本"对象移到这里"的页面,其中"here"是我尝试重定向到的文件的链接,但在冒号后面有两个斜杠而不是两个(即"file:////testserver/docs/testdoc.doc")

这通常伴随着"System.Threading.ThreadAbortException:Thread is aborted"消息.

我在其他地方寻找解决方案并找到一些有关Response.Redirect的有趣内容导致ThreadAbort异常,但这似乎不是根本问题 - 在我看来,实际问题是"对象移到这里"消息,导致抛出异常.

任何人都有任何建议我为什么会这样......?

编辑:忘记提及我正在使用IE Tab运行Firefox(3.5.7),所以当我想我最好在IE中试用它时,瞧它 - 它适用于IE(7).

Dan*_*plo 29

仅供将来参考,可能出现的另一个原因是,如果您执行Response.Redirect(null)或类似操作.我有一种情况,我的变量持有URL是空的,这就是我得到的.


Ara*_*ani 17

这可能是由于将Response.Redirect()方法置于try-catch块中而引起的.我遇到的解决方案通过将重定向标头刷新到客户端来虚拟结束响应.看一看:

HttpResponse Response = HttpContext.Current.Response;
Response.StatusCode = 301; 
Response.StatusDescription = "Moved Permanently";
Response.RedirectLocation = "YourRedirectionUrlHere.aspx";
Response.Flush();
Run Code Online (Sandbox Code Playgroud)


Chr*_*son 7

我刚刚遇到过这种情况.事实证明我们有一些有效的代码:

if (condition)
{
  Response.Redirect(page1);
}
Response.Redirect(page2);
Run Code Online (Sandbox Code Playgroud)

显然,写这篇文章的人(很久以前很幸运)没有意识到,默认情况下,Response.Redirect不会结束该线程.

我不知道这样做的后果是什么,但这种情况发生的小小的痕迹似乎显示了一个腐败的重定向.这当然可能是共同发生的,但这是我们看到这个问题的唯一地方.