DotNetOpenAuth.OpenId.RelyingParty.IAuthenticationRequest RedirectToProvider()ThreadAbortException

时间:2011-12-05 14:44:10

标签: dotnetopenauth threadabortexception

使用 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 ()

我该怎么做才能防止这种情况发生?

1 个答案:

答案 0 :(得分:3)

这是设计的。 DotNetOpenAuth调用ASP.NET Response.Redirect(),它本身抛出ThreadAbortException以终止当前页面上的执行。如果您正在使用Web表单,这很重要,因为它会阻止ASP.NET或页面在DNOA响应消息之后写入其他HTML,从而破坏邮件。

如果你在MVC中,你可以使用RedirectingResponse.AsActionResult()并返回它以避免异常。