2

DotNetOpenAuth -3.4.7.11121で System.Threading を受け取ります。DotNetOpenAuth.OpenId.RelyingParty.IAuthenticationRequest RedirectToProvider () メソッドの呼び出し時に ThreadAbortException が発生する。私のコールスタックは次のようになります

" で System.Threading.Thread.AbortInternal()\r\n で System.Threading.Thread.Abort(Object stateInfo)\r\n で System.Web. HttpResponse.End() \r\n で DotNetOpenAuth.Messaging. c:\BuildAgent\work\a02b428f36957bca\src\DotNetOpenAuth\Messaging\OutgoingWebResponse.cs:line 161\r\n の OutgoingWebResponse.Send(HttpContext context) c:\BuildAgent\work の DotNetOpenAuth.Messaging.OutgoingWebResponse.Send() \a02b428f36957bca\src\ DotNetOpenAuth \Messaging\OutgoingWebResponse.cs: 131 行目\r\n at DotNetOpenAuth.OpenId.RelyingParty.AuthenticationRequest.RedirectToProvider ()

これを防ぐにはどうすればよいですか?

4

1 に答える 1

3

これは仕様によるものです。DotNetOpenAuthはASP.NETResponse.Redirect()を呼び出します。これ自体がThreadAbortException、現在のページでの実行を終了するためにをスローします。Webフォームを使用している場合、これはASP.NETまたはページがDNOA応答メッセージの後に追加のHTMLを書き込んでメッセージを破損するのを防ぐため、重要です。

MVCを使用している場合は、それを使用RedirectingResponse.AsActionResult()して返すことで、例外を回避できます。

于 2011-12-06T14:24:02.277 に答える