我正在尝试进行HTTP 302重定向,但在调试模式下运行时遇到以下异常。
Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack
var response = HttpContext.Current.Response;
response.Clear();
response.Status = "302 Found";
response.AddHeader("Location", "http://google.com");
response.End();
response.Flush();
长话短说,这个电话并没有冲洗响应,也没有重定向。
我怎样才能使这个工作?
答案 0 :(得分:9)
您不应该以这种方式同时调用End
和Flush
- 要使用HTTP 302进行重定向,您应该使用HttpContext.Current.Response.Redirect
,请参阅http://msdn.microsoft.com/en-us/library/a8wa7sdt.aspx
答案 1 :(得分:5)
HttpResponse
对象有一个执行302重定向的方法。
Response.Redirect("page.aspx")
虽然您的代码应该可以正常工作,因为这是实现301 redirect
的常用方法。
请注意response.Flush()
是冗余的,因为响应缓冲区被刷新到客户端并且执行将在response.End()
结束,因此该行不会被执行。
谷歌搜索similar problems的其他人指向此知识库文章http://support.microsoft.com/kb/312629/EN-US/,这可能是导致您出现问题的原因。