C# SignalR Core未在Azure应用程序服务中使用WebSocket

C# SignalR Core未在Azure应用程序服务中使用WebSocket,c#,asp.net-core,websocket,azure-web-app-service,asp.net-core-signalr,C#,Asp.net Core,Websocket,Azure Web App Service,Asp.net Core Signalr,我正在开发使用以下堆栈的SignalR Core web应用程序: ASP.NET Core 2.1预览版2(2.1.0-preview2-final) 信号机核心1.0预览2(1.0.0-preview2-final) Microsoft.AspNetCore.Cors(2.1.0-preview2-final) Microsoft.AspNetCore.WebSockets(2.1.0-preview2-final) 客户端正在使用SignalR NPM包(@aspnet/SignalR

我正在开发使用以下堆栈的SignalR Core web应用程序:

  • ASP.NET Core 2.1预览版2(2.1.0-preview2-final)
  • 信号机核心1.0预览2(1.0.0-preview2-final)
  • Microsoft.AspNetCore.Cors(2.1.0-preview2-final)
  • Microsoft.AspNetCore.WebSockets(2.1.0-preview2-final)
客户端正在使用SignalR NPM包(@aspnet/SignalR)

应用程序的配置如下:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddPolicy(
            "CorsPolicy",
            builder => builder
                .AllowCredentials()
                .AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader());
    });

    services.AddSignalR();
}

public void Configure(IApplicationBuilder app)
{
    app.UseCors("CorsPolicy");
    app.UseDefaultFiles();
    app.UseStaticFiles();
    app.UseWebSockets();
    app.UseSignalR(routes =>
    {
        routes.MapHub<ClientHub>("/hubs/notifications");
    });
}
协商
方法似乎返回了对WebSocket的支持:

{"connectionId":"ZRniWKpMLMPIyLhS5RSyAg",
 "availableTransports":[
  {"transport":"WebSockets","transferFormats":["Text","Binary"]},
  {"transport":"ServerSentEvents","transferFormats":["Text"]},
  {"transport":"LongPolling","transferFormats":["Text","Binary"]}]
}

我错过什么了吗?或者WSS还不受支持?

回答我自己的问题,Websocket连接失败不是ASP.NET核心或堆栈的问题,而是因为Azure App Service需要在应用程序设置中启用Websocket:


你在Azure应用程序服务实例上启用了WS吗?/facepalm我没有看到要这样做的设置我在我的web应用程序上没有看到该设置,我只看到始终打开,任何其他启用该设置的设置?它们仍然存在,显然一年多过去了,因为这个答案和UI肯定会更改。设置>配置,然后在常规设置选项卡中。这可能是您的应用程序服务定价层的限制?您好,感谢您的重播,并打算更新此内容。我做了一些研究,结果表明该功能目前不适用于Linux主机,但您可以启用ARR Affinity with always on来实现类似的行为。我确实同意原稿是旧的,我的意图是试图找出我是否遗漏了什么。
{"connectionId":"ZRniWKpMLMPIyLhS5RSyAg",
 "availableTransports":[
  {"transport":"WebSockets","transferFormats":["Text","Binary"]},
  {"transport":"ServerSentEvents","transferFormats":["Text"]},
  {"transport":"LongPolling","transferFormats":["Text","Binary"]}]
}