2012-02-09 9 views
0

私たちにはグローバル例外クラスがあり、Webアプリケーション内のすべての例外を取得します。一般的な対応は、ユーザーをエラーページにリダイレクトすることです。response.redirectを呼び出している間の例外

更新パネルから例外が発生した場合、response.redirectは、という例外をスローします.HTTPヘッダーが送信された後、サーバーはヘッダーを消去できません。このスタックトレースと: System.Web.HttpApplication.SyncEventExecutionStepでSystem.Web.Handlers.ScriptModule.EndRequestHandlerでSystem.Web.HttpResponse.ClearHeaders()(オブジェクト送信者、 いるEventArgs電子)で

.System.Web.HttpApplication.IExecutionStep.Execute()System.Web.HttpApplication.ExecuteStepで 私はすでに試してみました

(IExecutionStepステップ、ブール& completedSynchronously)、 1. JSスクリプト 2.ヘッダーと内容のクリア

答えて

0

興味深い問題。私は前にいることを持っていたことがありませんが、これは私が役に立てば幸い

http://aspdotnetcodebook.blogspot.com/2008/03/using-responseredirect-in-aspnet-ajax.html

を見つけたものです。

+0

すでにそれに取り組んで、私もページへの参照を持っていない。 Page =新しいページは動作しません。再方向付けの前にポストバックを引き起こす方法はありますか? –

+0

なぜあなたはPageを参照する必要がありますか? URLを解決するには? –

0

私はあなたが非同期ポストバックエラーを処理するためにページリクエストマネージャに入ることができると信じています。

http://msdn.microsoft.com/en-us/library/bb383810.aspx

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 

function EndRequestHandler(sender, args) 
{ 
    if (args.get_error() != undefined) 
    { 
     var errorMessage = args.get_error().message; 
     args.set_errorHandled(true); 
     ToggleAlertDiv('visible'); 
     $get(messageElem).innerHTML = errorMessage; 
    } 
} 
0

どのようにグローバル例外クラスが実行されていることを?内のglobal.app_error?

さらに、Response.Redirectに2番目の引数としてtrueを追加すると、応答がすぐに終了します(app_errorの実行前)。これは、サーバーがクライアントにバイトを送信したことを意味します。つまり、レスポンスヘッダーにその値が含まれており、レスポンスヘッダーは既にクライアントに送信されています。あなたはそれを元に戻すことはできません。

この場合(true arg)、falseに設定してください(または2番目の引数を指定しないでください)。

関連する問題