【问题标题】:Websocket connection fail in .net 4.6.net 4.6 中的 Websocket 连接失败
【发布时间】:2016-06-23 21:51:53
【问题描述】:

我有一个与 4.5 配合得很好的信号器 升级到 4.6 后,在 Win 2008 R2 上运行正常,但在 Windows 2012 上无法运行。

错误是:

System.InvalidOperationException: WebSockets is unsupported in the current application configuration. To enable this, set the following configuration switch in Web.config:
system.web
httpRuntime targetFramework="4.5" 
system.web
For more information, see http://go.microsoft.com/fwlink/?LinkId=252465.
at  
System.Web.Util.SynchronizationContextUtil.ValidateMode(SynchronizationContextMode currentMode, SynchronizationContextMode requiredMode, String specificErrorMessage)

at System.Web.HttpContext.AcceptWebSocketRequest(Func2 userFunc, AspNetWebSocketOptions options) at Microsoft.AspNet.SignalR.Transports.WebSocketTransport.AcceptWebSocketRequest(Func2 callback)
at Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequestPostGroupRead(HostContext context, String groupsToken)
at Microsoft.AspNet.SignalR.TaskAsyncHelper.FromMethodT1,T2,T3,TResult
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Owin.Mapping.MapMiddleware.d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at 

    Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult.End(IAsyncResult ar)
    at         System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

如果我将 httpRuntime targetFramework="4.5" 添加到 web.config ,应用程序将根本无法运行。

【问题讨论】:

  • 您的问题解决了吗?

标签: websocket signalr .net-4.6


【解决方案1】:

添加

 <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
  </appSettings>

到 web.config 解决了问题

【讨论】:

    【解决方案2】:

    假设您在 IIS 中托管您的服务器,您需要在 IIS 中启用 websockets。以下是详细信息:http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support

    【讨论】:

    • 是的,我在 IIS 中托管服务器。并且启用了 WebSocket。
    猜你喜欢
    • 2017-11-18
    • 2019-08-30
    • 2018-12-19
    • 1970-01-01
    • 2022-10-17
    • 2016-04-20
    • 2013-12-17
    相关资源
    最近更新 更多