時ASP.NET システム。ます。Httpresponseに対して.End()を呼び出したあと、現在のスレッドが中断?

StackOverflow https://stackoverflow.com/questions/365249

質問

きます。ます。Httpresponseに対して.End()が呼び出されます。Thread.Abortであれ、私は推測する(または火)例外?かを伐採こに記載されていることがログファイル...

最初の機会

exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll
12/14/2008 01:09:31::
Error in Path :/authenticate
Raw Url :/authenticate
Message :Thread was being aborted.
Source :mscorlib
Stack Trace :   at System.Threading.Thread.AbortInternal()
   at System.Threading.Thread.Abort(Object stateInfo)
   at System.Web.HttpResponse.End()
   at DotNetOpenId.Response.Send()
   at DotNetOpenId.RelyingParty.AuthenticationRequest.RedirectToProvider()
   at MyProject.Services.Authentication.OpenIdAuthenticationService.GetOpenIdPersonaDetails(Uri serviceUri) in C:\Users\Pure Krome\Documents\Visual Studio 2008\Projects\MyProject\Projects\Services\Authentication\OpenIdAuthenticationService.cs:line 108
   at MyProject.Mvc.Controllers.AuthenticationController.Authenticate() in C:\Users\Pure Krome\Documents\Visual Studio 2008\Projects\MyProject\Projects\MVC Application\Controllers\AuthenticationController.cs:line 69
TargetSite :Void AbortInternal()
A first chance exception of type 'System.Threading.ThreadAbortException' occurred in Ackbar.Mvc.DLL
An exception of type 'System.Threading.ThreadAbortException' occurred in Ackbar.Mvc.DLL but was not handled in user code

この通常の動作とは可能で優雅にabortの代わりに(かよう)の急激abort?

更新

これまでの調査で デザイン.んだきったことを確認してくださいこ質調整が行えるようにするためのコードでない思いのスレッド 優雅に出口---可能ですか?コードする。

役に立ちましたか?

解決

はい、これは設計によって確かです。 Microsoftはさえ文書化するを持っていますそれ。他にどのようにあなたが実行から、あなたのプログラムの残りの部分を停止するのでしょうか?

他のヒント

中止「優雅」のようなものはありません。あなたは、単にフラッシュ()応答、しかし、それを終了してみましょう代わりのフレームワークは、あなたのための接続を閉じるの世話をすることができます。私は、つまり、あなたが応答がクライアントに送信します。この場合の典型的なケースを想定しています。

MSDN のによるとレスポンスを呼び出します応答が途中で終了したとき.END()はThreadAbortExceptionのをスロー。あなたは例外が発生するときあなたは本当に唯一のResponse.Endの()を呼び出す必要があります。

現在の実行を停止するには、あなたのスタックを再帰的に例外に関する本質的に無様なものは何もありません。確かにあなたを超えないが例外をスローし、あなたの例外で、いくつかの低い場所でそれをキャッチします。

私はあなたのログから、それをフィルタリングで見てね。あなたが設定することができ監視ASP.Netの健康を使用している場合は/あなたがthreadabort例外やないための通知を受け取るかどうかを制御するために指定されたプロバイダ(イベントログ、メール、など)への各例外をマップします。それはカスタムログだ場合は、それをチェックするならば、私は追加したい。

あなたのロギングコードがcatch(Exception e) { // log exception and then do not throw again }のようなものをやっている場合でも、ThreadAbortExceptionのはまだあなたのcatchブロックが終了後、フレームワークによって再び上昇することになるので、ThreadAbortExceptionのを食べることができないことに注意してください。

それはApplication.Endを(使用しているため、Response.Endの()メソッドを使用)、アプリケーションを停止しないでください。また、HTTPリクエストやページのライフサイクルに違反応答を使用しています。 HttpContext.Current.Response.Close()またはHttpContext.Current.ApplicationInstance.CompleteRequest()を使用します。

使用した上記の変化をもたく同じ問題が私のサポートも組み込まれています。

その後連絡してマスの提供&られたのが始まりとされていがないか確認してくださいソフトウェアやウイルス対策ブロック当社のファイル伝送のHTTP.またはISPネットワークはできないファイルを転写します。

いいかいサーバーの設定とバイパスの"データセンターの共有ファイアウォール"自分のwebサーバによって申請開始のダウンロードファイルです。

これは答えを入れてもらった。そのた私にとって

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top