【问题标题】:Azure dev fabric crashes with SocketException when using DotNetOpenAuth使用 DotNetOpenAuth 时 Azure 开发结构因 SocketException 而崩溃
【发布时间】:2010-04-22 17:01:08
【问题描述】:

我正在尝试使用 DotNetOpenAuth OpenID 身份验证在 Windows Azure Dev Fabric 下运行 ASP.NET MVC 2 网站。

Azure Dev Fabric 本身在我进行身份验证时反复崩溃 (dfloadbalancer.exe)。

对于允许使用 Azure Dev Fabric 和 DotNetOpenAuth 的问题是否有任何解决方法?

MSDN 上似乎有一些 old discussion 已被放弃。

System.Net.Sockets.SocketException was unhandled
  Message=An existing connection was forcibly closed by the remote host
  Source=System
  ErrorCode=10054
  NativeErrorCode=10054
  StackTrace:
       at System.Net.Sockets.Socket.Shutdown(SocketShutdown how)
       at Microsoft.ServiceHosting.Tools.DevelopmentFabric.LoadBalancer.ConnectionInfo.Release()
       at Microsoft.ServiceHosting.Tools.DevelopmentFabric.LoadBalancer.ServerConnector.Stop()
       at Microsoft.ServiceHosting.Tools.DevelopmentFabric.LoadBalancer.PacketForwarder.ProcessReceive(IAsyncResult result)
       at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
       at System.Threading.ExecutionContext.runTryCode(Object userData)
       at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Net.ContextAwareResult.Complete(IntPtr userToken)
       at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken)
       at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
       at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
  InnerException: 

崩溃前的最新日志消息是:

[WaWebHost.exe] Redirecting to http://www.myopenid.com/server?openid.claimed_id=http%3A%2F%2Fxxxxxx.myopenid.com%2F&openid.identity=http%3A%2F%2Fxxxxxx.myopenid.com%2F&openid.assoc_handle=xxxxxxx&openid.return_to=http%3A%2F%2F127.0.0.1%2Fuser%2FAuthenticate%3FReturnUrl%3D%26dnoa.userSuppliedIdentifier%3Dhttp%253A%252F%252Fxxxxxxxx.myopenid.com%252F&openid.realm=http%3A%2F%2F127.0.0.1%2F&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0
[fabric] Role state Unresponsive

【问题讨论】:

  • 我只能说“它对我有用”。你能添加一个相关的代码sn-p来说明你是如何进行重定向的吗?
  • 我没有做重定向。这来自 DotNetOpenAuth 记录器。实现与与您的库一起分发的简单 ASP.NET MVC 应用程序相匹配。看起来问题出在负载均衡器中,它以某种方式阻塞了这个重定向在它发生之后。

标签: openid crash azure dotnetopenauth


【解决方案1】:

我在使用以下语句时遇到了这个问题:

return request.RedirectingResponse.AsActionResult();

我通过将行更改为:

string location = request.RedirectingResponse.Headers["Location"];
return Redirect(location);

由于我不知道的原因,这解决了错误,让我无需对我的开发环境进行任何特殊更改即可重新开始工作。

【讨论】:

  • +1。感谢您的信息!我在 Windows Azure 论坛上发布了一个查询:social.msdn.microsoft.com/Forums/en/windowsazure/thread/…
  • 不幸的是,这对我不起作用,而且几年后它仍在发生。
  • AsActionResult() 是最好的代码,因为当重定向被格式化为脚本形式的帖子而不是带有 Location 标头的 301 重定向时,它不会随机失败。我怀疑崩溃可能是由于 web.config 文件中缺少 bindingRedirects。确保您有适当的 MVC 从 1.0 到您实际使用的版本的重定向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-20
  • 1970-01-01
  • 2014-01-25
  • 2011-03-13
  • 2013-03-09
  • 2015-12-08
  • 1970-01-01
相关资源
最近更新 更多