在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调用< %%>的html页面时,会发生这种情况。 (它有一个指向正常.aspx页面的框架)
由于这是一个当前部署的应用程序,如果我不需要,我不打算对它进行太多更改。我更感兴趣的是知道Server.Transfer
进程中的哪一个会中止一个帖子。
答案 0 :(得分:1)
转移到的页面应该是另一个.aspx页面。例如,a 转移到.asp或.asmx页面无效。转移方法 保留QueryString和Form集合。
传输调用End,它会抛出一个ThreadAbortException异常 完成。
对于Response.Redirect也是如此(默认情况下,虽然您可以覆盖它。)您可以忽略这些错误。
但是,即使处理在原始页面上结束,处理仍应在转移到的页面上继续。
答案 1 :(得分:0)
答案 2 :(得分:0)
据我所知,Server.Transfer
系统抛出线程中止异常,并开始执行新的页面循环。另一方面,Response.Redirect
,此方法正确结束响应并将状态302发送到客户端,
HTTP 1.0 302 Object Moved
Location: http://www.google.com
比客户端请求在回复location
中指定的新页面。