ASP.net Core SignalR:服务器返回握手错误:成功连接后握手被取消

问题描述 投票:0回答:2

我正在尝试将我的客户端应用程序与服务器上定义的

IHubContext
连接。当我在本地系统中使用 localhost 尝试此操作时,一切正常,如下屏幕截图所示,我可以收到
SignalR
消息。

但是当我在

IIS server
上部署应用程序,然后尝试使用我的客户端连接到该应用程序时,成功连接后,我得到
Handshake cancelled message
。有什么问题吗?

请注意,我已使用

WebSockets
Server Manager
在我的服务器上启用了
IIS
。下面是我的客户端代码(在
localhost
上运行得很好。

"use strict";
var connection = new signalR.HubConnectionBuilder().withUrl("http://localhost:53832/api/[email protected]", {
    skipNegotiation: true,
    configureLogging: "warn",
    withHandshakeResponseTimeout: 3000000,
    transport: signalR.HttpTransportType.WebSockets 
    //,headers :  {jwtBearer: tokenValue}
}).configureLogging(signalR.LogLevel.Debug)
    .build();
connection.serverTimeoutInMilliseconds = 1000000;
connection.on("NotifyClient", (response) => {
    var heading = document.createElement("h3");
    heading.textContent = response.useR_NAME;
    var p = document.createElement("p");
    p.innerText = response.subject;
    var div = document.createElement("div");
    div.appendChild(heading);
    div.appendChild(p); document.getElementById("articleList").appendChild(div);
});
connection.start().catch(function (err) {
    return console.error(err.toString());
}).then(function () {
    document.getElementById("user").innerHTML = "UserId: " + userId;
    connection.invoke("GetConnectionId").then(function (connectionId) {
        document.getElementById("signalRConnectionId").innerHTML = connectionId;
    })
});

我也在

app.UseWebSockets()
文件的
Configure
方法中设置了
Startup

.net asp.net-core websocket signalr
2个回答
2
投票

您应该在 .NET Core 中的启动文件中添加此属性:

  1. 启用详细错误
  2. 保持活动间隔
  3. 握手超时
public void ConfigureServices(IServiceCollection services){
  services.AddSignalR(hubOptions => {    
    hubOptions.EnableDetailedErrors = true;    
    hubOptions.KeepAliveInterval = TimeSpan.FromSeconds(10); 
    hubOptions.HandshakeTimeout = TimeSpan.FromSeconds(5);
  });
} 

-1
投票

用管理员打开cmd,然后输入以下命令。

netsh http add urlacl url=http://:<ip_address>:53832/ user="NT AUTHORITY\Authenticated Users
© www.soinside.com 2019 - 2024. All rights reserved.