SignalR 错误 405(方法不允许)- 协商

SignalR Error 405 (method not allowed) - Negotiate

在我的环境下面:

我们在 SignalR 连接方面遇到了一些问题。

通过尝试 1,我们能够在我们的开发环境(本地主机)中正确使用 signalR,但是当我们在生产环境中部署它时,我们收到错误:

"与 'wss://xxxxxxxxx:60000/PushNotificationHub?access_token=' 的 WebSocket 连接失败:WebSocket 握手期间出错:意外的响应代码:400"

尝试 1

connessioneServizioChat = new signalR.HubConnectionBuilder().withUrl(puntatori.url.applicazioneApiCore + "PushNotificationHub", {
            accessTokenFactory: () => sicurezza.dati.tokenAutenticazioneWebApi,
            skipNegotiation: true,
            transport: signalR.HttpTransportType.WebSockets
        }).build();

所以我们试图通过以下解决方案避免 "websocket" 传输类型:

 connessioneServizioChat = new signalR.HubConnectionBuilder()
            .withUrl(puntatori.url.applicazioneApiCore + "PushNotificationHub")
            .configureLogging(signalR.LogLevel.Information)
            .build();

在这种情况下,我们在开发环境中也遇到了问题:

signalrNew.min.js:16 选项 https://localhost:60000/PushNotificationHub/negotiate 405(方法不允许)

我们不明白什么是协商方法以及如何解决我们的问题。

有人可以帮助我们吗?

谢谢

2 天后我们找到了解决方案。 问题是服务器 IIS。 在我们的测试服务器中,我们有 windows server 2008 with IIS 7.5。但是 IIS 7.5 不支持 WebSocket because it was introduced with IIS 8.0.