ASP.NET Core 3 Blazor: работает на локальном сервере нормально, но работает за пределами сервера ошибка: ошибка при рукопожатии WebSocket: неожиданный код ответа: 200 - PullRequest
0 голосов
/ 02 октября 2019

Я использую .NET Core 3.0.0, Blazor на стороне сервера, Visual Studio 2019, Windows Server 2016. Я работаю на сервере нормально, но соединение с внешним сервером является ошибкой.

Я использую Apache HTTPВиртуальный хост веб-сервера 2.4 (http://httpd.apache.org/docs/2.4/vhosts/), файл httpd-vhosts.conf

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
    ServerName demo.example.com
    ErrorLog ${APACHE_LOG_DIR}webapp1-error.log
    CustomLog ${APACHE_LOG_DIR}webapp1-access.log common
</VirtualHost>

In httpd.conf, модуль включения: proxy, proxy_httpd, proxy_wstunnel и

<VirtualHost *:80>
  ServerName demo.example.com

  RewriteEngine On
  RewriteCond %{REQUEST_URI}  ^/demo.example.com            [NC]
  RewriteCond %{QUERY_STRING} transport=websocket    [NC]
  RewriteRule /(.*)           ws://localhost:5000/$1 [P,L]

  ProxyPass / http://localhost:5000/
  ProxyPassReverse / http://localhost:5000/
</VirtualHost>

эта ошибка

blazor.server.js: 1 Сбой подключения WebSocket к 'ws: //demo.xxxx.xx/_blazor? Id = LZk17pmIejWGHLkhN3HFmA': ошибка во время рукопожатия WebSocket: Неожиданный код ответа: 200

1 Ответ

1 голос
/ 02 октября 2019

Кажется, у других были проблемы с проксированием соединения через веб-сокет. Нашел потенциальное решение для вас здесь: https://github.com/aspnet/Blazor/issues/1882

<VirtualHost *:80>
ServerName www.domain.com
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/

RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule /(.*) ws://127.0.0.1:5000/$1 [P]

ErrorLog /.log
CustomLog /.log common
...