【问题标题】:DotNetOpenAuth.OpenId.RelyingParty.IAuthenticationRequest RedirectToProvider() ThreadAbortExceptionDotNetOpenAuth.OpenId.RelyingParty.IAuthenticationRequest RedirectToProvider() ThreadAbortException
【发布时间】:2011-12-05 14:44:10
【问题描述】:

使用 DotNetOpenAuth-3.4.7.11121 我在调用 DotNetOpenAuth.OpenId.RelyingParty.IAuthenticationRequest RedirectToProvider() 方法时收到 System.Threading.ThreadAbortException .我的调用堆栈看起来像

" 在 System.Threading.Thread.AbortInternal()\r\n 在 System.Threading.Thread.Abort(对象状态信息)\r\n at System.Web.HttpResponse.End()\r\n at DotNetOpenAuth.Messaging.OutgoingWebResponse.Send(HttpContext 上下文) 在 c:\BuildAgent\work\a02b428f36957bca\src\DotNetOpenAuth\Messaging\OutgoingWebResponse.cs:line 161\r\n 在 DotNetOpenAuth.Messaging.OutgoingWebResponse.Send() 中 c:\BuildAgent\work\a02b428f36957bca\src\DotNetOpenAuth\Messaging\OutgoingWebResponse.cs:line 131\r\n 在 DotNetOpenAuth.OpenId.RelyingParty.AuthenticationRequest.RedirectToProvider()

我能做些什么来防止这种情况发生?

【问题讨论】:

    标签: dotnetopenauth threadabortexception


    【解决方案1】:

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

    如果您在 MVC 中,则可以使用 RedirectingResponse.AsActionResult() 并将其返回以避免异常。

    【讨论】:

      猜你喜欢
      • 2015-02-11
      • 2011-06-07
      • 1970-01-01
      • 2011-09-17
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多