2011-08-29 33 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を使うべきではHttpResponseオブジェクトは302リダイレクトを実行するための方法を持っているhttp://msdn.microsoft.com/en-us/library/a8wa7sdt.aspx

+0

は302リダイレクトですか?それは私のために働いたが、もしそれがどうかわからないのです。 – DarthVader

+0

はい - そうです、MSDNへのリンクを参照してください... – Yahia

+0

@ user177883助けを借りて... – Yahia

4

を参照してください。

Response.Redirect("page.aspx") 

301 redirectを実装する一般的な方法であるため、コードは正常に動作するはずです。

応答バッファがクライアントにフラッシュされ、実行がresponse.End()で終了するため、response.Flush()は冗長であるため、行は実行されません。

similar problemsを持つ他のユーザーをGoogle検索すると、このKBの記事http://support.microsoft.com/kb/312629/EN-US/が指摘され、問題の原因となりそうです。

+0

は302リダイレクトですか?それは私のために働いたが、私はそれがある場合はわからない#302 – DarthVader

+0

それはドキュメントによると、あなたは火かき棒やバイブレーターのようなものを使用してチェックすることができます。 –

関連する問題