.net 4.6 中的 Websocket 连接失败

标签 websocket signalr .net-4.6

我有一个与 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 ,应用程序根本不会运行。

最佳答案

添加

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

到web.config解决了问题

关于.net 4.6 中的 Websocket 连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37970189/

相关文章:

c# - 在 DataGridView 中将自动生成的列设置为只读

来自可移植类库 : Value cannot be null or an empty string. 的 Nuget 参数名称:profileValue

javascript - 如何确保在页面卸载之前始终调用代码

node.js - Spring websocket 过度踩踏

javascript - 带控制台示例的 signalR Web 应用程序

c# - 客户端未收到 SignalR 消息

asp.net - MS .NET 4.6 可以与 Visual Studio 2010 一起使用吗

windows - Websocket 服务器在约 600 个连接后停止接受

javascript - 如何使用 Nexmo 建立多个 WebSocket 连接

asp.net-core - 通过 K8S Ingress 的 SignalR 连接