2011-08-29 185 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

是的,它是根據文件,你可以使用像螢火蟲或提琴手檢查。 –