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

时间:2019-04-30 16:31:52

标签: asp.net-core signalr azure-active-directory asp.net-core-2.2

在我的环境下面

  • 具有 Mvc .NetCore 2.2
  • 的Web客户端Javascript Web api .Net Core 2.2中的
  • WebAPI
  • 带有openid的AzureAd身份验证

我们在SignalR连接方面遇到麻烦。

使用 Attempt 1 ,我们可以在开发环境(localhost)中正确使用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(不允许使用方法)

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

有人可以帮助我们吗?

谢谢

1 个答案:

答案 0 :(得分:0)

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