SignalR "Нет связи с этим идентификатором" - PullRequest
0 голосов
/ 10 июня 2019

У меня есть веб-приложение asp.net core 2.1, которое развернуто на сервере Ubuntu 18.04 LAMP как автономное приложение.

Есть страница чата, созданная с помощью SignalR, и на localhost все работает нормально,

Однако, когда я подключаюсь к http://www.limboworld.net / реальному веб-сайту / и захожу на страницу чата и осматриваю Консоль с помощью инструментов разработчика, я вижу следующее:

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

При нажатии на ссылку http://www.limboworld.net/hubs/chat?id=8rE5uw4Ck9PIpoaCF_KuMA я получаю «Нет связи с этим идентификатором».

В соответствии с http://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html, Я пытался добавить

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

, но я не уверен, что является причиной проблемы.

Может быть, есть какая-то проблема с моим кодом, и поэтому я выкладываю это здесь, хотя я только пытался настроить Apache.

Может кто-нибудь помочь мне удалить сообщение об ошибке в Chrome DeveloperКонсоль инструментов?

Любая помощь в том, почему это не работает, приветствуется.

1 Ответ

0 голосов
/ 14 июня 2019

Как я уже говорил в комментарии выше, после изменения конфигурации 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/ помогла мне решить проблему.

Мне пришлось установить пакет nuget с помощью команды Install-Package Serilog.Extensions.Logging.Fileи после этого добавьте следующий код в файл Startup.cs:

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

Это эффективно удаляет все ошибки в консоли инструментов разработчика Chrome.

Надеюсь, это поможет кому-то с подобной проблемой.

Ура!

...