我被告知Respond.Redirect是一个昂贵的过程,因为它引发了ThreadAbortException.所以相反,我们应该使用CompleteRequest函数.所以我试一试,但我注意到它下面的代码仍在运行,我不想要.我想立即强制浏览器跳转到另一个网站.
Public Shared Sub TestCompleteRequest()
If 1 = 1 Then
System.Web.HttpContext.Current.Response.Redirect("Http://Google.com", False)
System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest()
End If
Throw New ApplicationException("Hello, why are you here?")
End Sub
Run Code Online (Sandbox Code Playgroud)
至于上面的代码,仍然抛出ApplicationException.但为什么?:(
gre*_*g84 15
一种方法不直接替换另一种方法.该CompleteRequest()方法 不会当它被称为终结执行.所以,如果你真的想做什么,那么Response.Redirect(字符串)将是你要走的路.
CompleteRequest()只是绕过Response.End()方法,这就是生成你提到的ThreadAbortException的方法,但最重要的是CompleteRequest()刷新了响应缓冲区.这意味着HTTP 302重定向响应将发送到您调用CompleteRequest()的行的浏览器,这使您有机会在响应发送给用户后执行不影响响应的操作.
您的解决方案实际上取决于您需要实现的目标,您能提供一个使用Response.Redirect的示例以及其他代码在同一方法中的示例吗?
| 归档时间: |
|
| 查看次数: |
12006 次 |
| 最近记录: |