使用 DotNetOpenAuth-3.4.7.11121 我在调用DotNetOpenAuth.OpenId.RelyingParty.IAuthenticationRequest RedirectToProvider ()方法时收到System.Threading。 ThreadAbortException 。我的调用堆栈看起来像
“在System.Threading.Thread.AbortInternal()\ r \ n at System.Threading.Thread.Abort(Object stateInfo)\ r \ n at System.Web。 HttpResponse.End() \ r \ n at DotNetOpenAuth.Messaging.OutgoingWebResponse.Send(HttpContext context) 在 C:\ BuildAgent \工作\ a02b428f36957bca的\ src \ DotNetOpenAuth \通讯\ OutgoingWebResponse.cs:行 161 \ r \ n在DotNetOpenAuth.Messaging.OutgoingWebResponse.Send()in C:\ BuildAgent \工作\ a02b428f36957bca的\ src \ DotNetOpenAuth \通讯\ OutgoingWebResponse.cs:行 131 \ r \ n at DotNetOpenAuth.OpenId.RelyingParty.AuthenticationRequest。的 RedirectToProvider ()
我该怎么做才能防止这种情况发生?
答案 0 :(得分:3)
这是设计的。 DotNetOpenAuth调用ASP.NET Response.Redirect(),它本身抛出ThreadAbortException
以终止当前页面上的执行。如果您正在使用Web表单,这很重要,因为它会阻止ASP.NET或页面在DNOA响应消息之后写入其他HTML,从而破坏邮件。
如果你在MVC中,你可以使用RedirectingResponse.AsActionResult()
并返回它以避免异常。