Ответ 1
используйте этот тег в файле web.config:
<httpRuntime maxRequestLength="40960" targetFramework="4.5" requestValidationMode="2.0" />
в теге <system.web>
.
Опишите целевую инфраструктуру. Исключить будет
Я только начал работать с SignalR. Я реализовал отражение данных в реальном времени на своем сайте с помощью signalr. Я получаю сообщение об ошибке "Ошибка во время установления соединения с Web-Socket: непредвиденный код ответа: 400" на консоли при попытке подключения к веб-соке.
Приложение разработано с помощью Asp.net MVC - signalR 2.0.3 и размещено на сервере Windows 2012 - IIS 8
Я нашел одно решение из этой ссылки
В нем говорится, что нам нужен веб-сайт, чтобы указать на HTTPS (и воспользоваться SSL), а затем http для работы с веб-сокетом. И моя проблема тоже решена. Я сомневаюсь - не можем ли мы решить эту проблему без использования HTTPS? Поскольку на каждом веб-сайте может не потребоваться размещение на HTTPS (для чего требуется SSL).
используйте этот тег в файле web.config:
<httpRuntime maxRequestLength="40960" targetFramework="4.5" requestValidationMode="2.0" />
в теге <system.web>
.
Опишите целевую инфраструктуру. Исключить будет
Если проблема связана с прокси-серверами, существующими в пути от клиента к серверу, вы ничего не можете сделать, но жаловаться на своего провайдера (как клиента, так и сервера).
Как веб-сокеты HTML5 взаимодействуют с прокси-серверами
Используя безопасное соединение, вы гарантируете, что прокси-сервер не будет работать с вашим соединением.
Эта ошибка 400 также может произойти, если вы работаете на нескольких серверах за балансировщиком нагрузки. Осмотрите тело ответа 400 (например, используя Fiddler) и посмотрите, находите ли вы это: The ConnectionId is in the incorrect format
. Если это так, то ваша проблема может заключаться в том, что вы не используете один и тот же машинный ключ на каждом сервере приложений.
Подробнее об этом решении см. в этом ответе: fooobar.com/questions/612952/...
Если вы находитесь за Nginx, добавьте эти три строки (начинающиеся с proxy_
):
server {
listen 443; # Or 80 or whatever
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
...
}
HTTPS/HTTP не проблема. WSS будет автоматически использоваться на страницах HTTPS, а WS - на HTTP без каких-либо ручных настроек.