SignalR 错误 405(方法不允许)- 协商
SignalR Error 405 (method not allowed) - Negotiate
在我的环境下面:
- Web 客户端 Javascript 使用 Mvc .NetCore 2.2
- WebAPI in Web api .Net Core 2.2
- 使用 openid 的 AzureAd 身份验证
我们在 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.
在我的环境下面:
- Web 客户端 Javascript 使用 Mvc .NetCore 2.2
- WebAPI in Web api .Net Core 2.2
- 使用 openid 的 AzureAd 身份验证
我们在 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.