SignalR“没有与该ID的连接”

时间:2019-06-10 13:53:16

标签: apache asp.net-core ubuntu-18.04 asp.net-core-signalr

我有一个asp.net core 2.1 Web应用程序,它作为独立的应用程序部署到Ubuntu 18.04 LAMP服务器。

有一个用SignalR创建的聊天页面,在localhost上一切正常。

但是,当我连接到http://www.limboworld.net / real网站/ 并转到“聊天”页面并使用开发人员工具检查控制台,我将看到以下内容:

https://drive.google.com/open?id=12JxhgoDtpXwrMFX7Z5oJ6MlkpkuN0How

点击链接http://www.limboworld.net/hubs/chat?id=8rE5uw4Ck9PIpoaCF_KuMA时,我得到“该ID无效”。

根据http://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html,我尝试添加

ProxyPass "/ws2/" "ws://echo.websocket.org/"

指令,但我不确定是什么原因引起的。

也许我的代码有问题,这就是为什么即使我只尝试配置Apache也将其发布在这里的原因。

有人可以帮我删除Chrome开发者工具控制台中的错误消息吗?

感谢您提供任何有关为什么此功能无效的帮助。

1 个答案:

答案 0 :(得分:0)

正如我在上面的评论中所述,根据以下链接更改apache配置后:https://community.bitwarden.com/t/websocket-fails-behind-apache-proxy/3696/3,如下所示:

<VirtualHost *:80>
    RewriteEngine On
    ProxyPreserveHost On
    ProxyRequests Off

    # allow for upgrading to websockets
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /(.*)           ws://127.0.0.1:5000/$1 [P,L]
    RewriteCond %{HTTP:Upgrade} !=websocket [NC]
    RewriteRule /(.*)           http://127.0.0.1:5000/$1 [P,L]

    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/

    ProxyPass /hubs/chat ws://127.0.0.1:5000/hubs/chat
    ProxyPassReverse /hubs/chat ws://127.0.0.1:5000/hubs/chat

</VirtualHost>

浏览器正在连接到网络套接字。 现在我遇到了另一个错误:signalr.min.js:13 Error: Connection disconnected with error 'Error: Websocket closed with status code: 1006 ()'.

本文:http://blog.etrupja.com/2018/08/the-antiforgery-token-could-not-be-decrypted/帮助我解决了问题。

我必须使用命令Install-Package Serilog.Extensions.Logging.File安装一个nuget软件包,然后 将以下代码添加到Startup.cs文件中:

ConfigureServices(IServiceCollection services)
{
//your code here
services.AddDataProtection()
.SetApplicationName("your-app-name")
.PersistKeysToFileSystem(new DirectoryInfo("your-path-here"));
//your code here
}

这有效地消除了Chrome开发者工具控制台中的所有错误。

我希望这可以帮助遇到类似问题的人。

干杯!