2011-08-29 183 views
6

我试图做一个HTTP 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(); 

长话短说,这个呼叫未冲洗的响应,而不是重定向。

我该如何得到这个工作?

+0

您是否在调试模式下编译您的应用程序并像这样运行,或者您是否在发布模式下编译应用程序,并简单地将调试程序附加到进程? – Icarus

+0

看看这里以及http://automagical.rationalmind.net/2010/03/08/response-redirect-and-302-and-301-status-codes/ –

回答

7

你不应该调用这个方法既EndFlush - 与HTTP重定向302,你应该使用HttpContext.Current.Response.Redirect看到http://msdn.microsoft.com/en-us/library/a8wa7sdt.aspx

+0

是302重定向?这对我工作,但即时通讯不知道这是否302 – DarthVader

+0

是的 - 它是,请参阅我的答案中的MSDN链接... – Yahia

+0

@ user177883请不要忘记upvote /标记为接受任何有帮助的答案... – Yahia

4

HttpResponse对象有用于执行302重定向的方法。

Response.Redirect("page.aspx") 

虽然您的代码应该正常工作,因为这是实现301 redirect的常用方法。

请注意,response.Flush()是冗余的,因为将响应缓冲区刷新到客户端,并且执行将在response.End()结束,以便该行不会执行。

谷歌搜索其他与similar problems指向这个知识库文章http://support.microsoft.com/kb/312629/EN-US/这可能是你的问题的原因。

+0

是302重定向?这对我有效,但我不知道这是否302 – DarthVader

+0

是的,它是根据文件,你可以使用像萤火虫或提琴手检查。 –