2016-07-29 11 views
1

Я использую веб-приложение signalr2.2 и размещен в IIS-8. Здесь я попытался реализовать балансировку нагрузки для своего приложения, используя ARR3.0. В моей ферме серверов я подключил два сервера и установил правило маршрутизации как «взвешенный циклический». На каждом сервере есть javascript-клиент с HTML-страницей. В то время как я доступ к HTML-страницу любого сервера запрос был маршрутизируемого, как ожидалось, но я имею эту ошибку в моем HTML-страницы и signalr не присоединятьсяSignalR 2.2 и ARR3.0 Балансировка нагрузки

WebSocket подключение к «WS: //mydomain.com/signalr/подключить транспорт = WebSockets & ClientProtocol = 1,5 & connectionToken = x9rAfatyMm3TbqzrYKL1K37Z4tKrUTH7bwNmSItW55Z0ms6pe43YiQGFOmaHMyT% 2BpmGz62ukt4tha72vPcJhdqLtIvsQvqvY15oYGv69JjzSuuiSL7v2l% 2FccZT6tQa3Z & connectionData =% 5B% 7B% 22name% 22% 3A% 22chathub% 22% 7D% 5D & TID = 1' не удалось: Ошибка во время Согласование WebSocket: код непредвиденного ответа: 400

Если я делаю в оффлайне любого из этого сервера в моем сервере, signalr работал нормально и никаких ошибок не будет. Помогите мне найти решение.

Если я общаюсь сервер signalr из моего .net клиентского приложения он будет бросать следующую ошибку

Ошибка во время запроса запуска. Остановка соединения.

+0

Вам необходимо настроить тот же ключ машины на всех серверах фермы – janitha000

+0

Привет @ janithat000, мне нужно уточнить, В ферме серверов после внесенных изменений ключа машины. Всякий раз, когда я ударяю URL-адрес, onconnected происходит на одном сервере и концентраторе вызов метода произошел на другом сервере. Это процедура маршрутизации? или я что-то упускаю? PLS помочь мне. Примечание: Я использую проверку через аутентификацию в узле приложения – Suresh

ответ

2

У меня была эта проблема. Глядя глубже, ошибка: The connection id is in the incorrect format. Немного поработав с поиском, я где-то читал, что при запуске среды фермы серверы должны использовать один и тот же машинный ключ, который можно настроить в IIS.

Для этого выполните следующие действия:

  • Откройте IIS подключения к любому из серверов в ферме.
  • В узле сервера, откройте Machine Key параметр в правой панели
  • В правом меню выберите генерации ключей
  • снимите флажок Generate a unique key for each application вариант для обоих Validation ключ и ключ дешифрования ,
  • Скопируйте два сгенерированных ключа (например, вставьте в блокнот)
  • Убедитесь, что все серверы фермы совместно используют эти же ключи (сервер ARR не нужен), возможно, вам придется повторить описанные выше шаги (возможно, вы не сможете, как только они будут использовать Shared Configuration).

Кроме того, вам необходимо убедиться, что ваше приложение на каждом сервере использует тот же идентификатор. Например, выберите свой узел приложения (или узел узла, если это так), в правом меню выберите Основные настройки, затем Подключить как .... Если выбранная опция Пользователь приложения, вам необходимо проверить, как настроен ваш пул приложений. Если он использует Network Service (как и мои), у вас все еще будут проблемы, потому что каждый сервер использует свои собственные учетные данные, но вы должны убедиться, что они используют один и тот же идентификатор.

В моем сценарии мне пришлось создать пользователя, имеющего доступ к каждому серверу фермы, и заставить приложение использовать этого же пользователя. Только после этого моя проблема была решена.

+0

Спасибо Alisson. Я попробую это и дам вам знать – Suresh

+0

Привет @Alisson, он работает нормально, и после этого я никогда не получаю никакой ошибки сокета. Спасибо за эту информацию. Но мне нужно уточнить одно: на ферме серверов после внесенных изменений в машинный ключ, когда я ударил URL-адрес, onconnected произошел на одном сервере, а вызов метода-концентратора произошел на другом сервере. Это процедура маршрутизации? или я что-то упускаю? PLS помочь мне. Примечание: Я использую пройти через аутентификацию в узле приложения – Suresh

+0

@Suresh, пожалуйста. Подумайте о том, чтобы пометить ответ как принятый, если это так. – Alisson