0

在某些情况下,我会遇到一些错误Server.Transfer

威胁已经被清除了。

at System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride)     
at System.Web.HttpServerUtility.Execute(String path, TextWriter writer, Boolean preserveForm)     
at System.Web.HttpServerUtility.Transfer(String path)     
at App._Default.TransferToCheckLoginPage() in blahblah\Default.aspx.vb:line 31     
at App._Default.Page_Load(Object sender, EventArgs e) in blahblah\Default.aspx.vb:line 18

威胁已经被清除了。

at System.Threading.Thread.AbortInternal()     
at System.Threading.Thread.Abort(Object stateInfo)     
at System.Web.HttpResponse.End()     
at System.Web.HttpServerUtility.Transfer(String path)     
at App.ASPX.ck_login.TransferToStartPage() in blahblah\ck_login.aspx.vb:line 45     
at App.ASPX.ck_login.Page_Load(Object sender, EventArgs e) in blahblah\ck_login.aspx.vb:line 33

现在奇怪的是传输完成(在某些情况下它没有完成,这就是我对这个错误感兴趣的原因)

在 server.transfer 期间会发生哪些 ASP.Net 生命周期事件?

在一种情况下,当 Server.Transfer() 指向具有扩展名 .aspx (没有页面指令)但内联 asp 调用 <% %> (并且它有一个指向正常的 .aspx 页面)

由于这是一个当前部署的应用程序,如果我不需要,我不希望对其进行太多更改。我更感兴趣的是知道Server.Transfer进程中的什么会中止线程。

4

3 回答 3

1

来自文档

转移到的页面应该是另一个 .aspx 页面。例如,转移到 .asp 或 .asmx 页面是无效的。Transfer 方法保留 QueryString 和 Form 集合。

Transfer 调用 End,完成时会引发 ThreadAbortException 异常。

Response.Redirect 也是如此(默认情况下,尽管您可以覆盖它。)您可以忽略这些错误。

但是,即使处理在原始页面上结束,处理也应该在转移到的页面上继续

于 2012-08-06T20:19:05.983 回答
0

是的,它确实。你可以放心地忽略它

此行为是设计使然。

http://support.microsoft.com/kb/312629

于 2012-08-06T20:18:18.537 回答
0

据我所知,在Server.Transfer系统抛出 Thread abort 异常,并开始执行新的页面循环。另一方面Response.Redirect,此方法正确结束响应并向客户端发送状态 302,

HTTP 1.0 302 Object Moved 
Location: http://www.google.com

比客户端请求在响应中指定的新页面location

于 2012-08-06T20:18:40.227 回答