Http Redirect 302

时间:2011-08-29 17:39:57

标签: c# asp.net http redirect http-status-code-302

我正在尝试进行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();

长话短说,这个电话并没有冲洗响应,也没有重定向。

我怎样才能使这个工作?

2 个答案:

答案 0 :(得分:9)

您不应该以这种方式同时调用EndFlush - 要使用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/,这可能是导致您出现问题的原因。