我使用 SignalR 开发了一个 Web 应用程序,它在我的开发服务器上运行良好。但由于某些未知原因,它不适用于生产服务器。
我做了一些测试:
$.connection.hub.start().done(function () {
console.log('started');
});
这总是按预期在控制台中“开始”。所以客户端和服务器是连接的。但是当我发送任何数据(如登录凭据)时,我没有收到任何回复。
这是连接框架图像。如您所见,客户端正在向服务器发送数据,但没有收到任何响应。
public override Task OnConnected()
{
Clients.All.Listen("Connected to HUB");
}
客户端监听方法:
hub.client.listen = function (response) {
console.log('Listen', response);
}
有一个我用来调试的 Listen 方法。这不会打印任何内容。所以信号客户端服务器没有连接。
编辑:
在此处报告问题:https://github.com/SignalR/SignalR/issues/4279如果这有帮助。
编辑2:
我的 webapp 是一个 Vue js 2 应用程序。我使用 vue-cli 编译并上传到服务器。我的 signalr.js 文件是从 ASP.NET MVC 项目复制的。
我使用 SignalR 2.4 制作了一个测试 ASP.NET MVC 5 应用程序,并且能够在实时服务器上进行通信。
最佳答案
https://docs.microsoft.com/en-us/aspnet/signalr/overview/testing-and-debugging/troubleshooting
IIS 问题
本节包含 Internet 信息服务的问题。
SignalR 适用于 Visual Studio 开发服务器,但不适用于 IIS
SignalR is supported on IIS 7.0 and 7.5, but support for extensionless URLs must be added. To add support for extensionless URLs, see https://support.microsoft.com/kb/980368
SignalR requires ASP.NET to be installed on the server (ASP.NET is not installed on IIS by default). To install ASP.NET, see ASP.NET Downloads.
关于SignalR 客户端服务器已连接但未将数据推送到生产服务器上的客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53369265/