2013-07-30 4 views
7

У меня есть рабочее чат-приложение, работающее на SignalR 1.1.2, которое будет размещено на серверах с балансировкой нагрузки, поэтому мне нужно реализовать решение объединительной платы для синхронизации серверов./signalr/hubs не генерируются при обновлении до SignalR-2.0.0-beta2

Это приложение ASP.NET MVC4 .NET 4.5. Использование Контактов SignalR, а не постоянное соединение. Приложение использует AngularJS на стороне клиента для обработки привязок и обновлений ui.

Я выполнил шаги, перечисленные в here, для реализации объединительной платы сервера sql и использовал шаги, описанные в перенастройке 1.x to 2.0, очерченной here. Решение строится, но при попадании страницы, использующей SignalR, ссылка сценария «/ signalr/hubs» возвращает ошибку 500.

Вот список шагов, которые я предпринял до сих пор.

  • Используя nuget, удалите все ссылки и зависимости, связанные с SignalR 1.1.2. Двойные проверки/bin и/packages каталоги, чтобы убедиться, что они больше не ссылаются на старые библиотеки. Это за комментарий, найденный в github issue, относящийся к обновлению 2.0, при котором удаление и переустановка SignalR было способом перехода на обновление.

  • установлен SignalR 2.0.0-beta2 с помощью диспетчера пакетов консоли (PMC) Install-Package Microsoft.AspNet.SignalR -Pre

  • установлен SQL Server объединительной платы сообщений с использованием ПМК Install-Package Microsoft.AspNet.SignalR.SqlServer -Pre

  • Удалены RouteTable.Routes.MapHubs(); из Global.asax

  • Создал класс запуска в корне проекта.

Startup.cs

using Microsoft.AspNet.SignalR; 
using Microsoft.Owin; 
using Owin; 

namespace My.NameSpace 
{ 
    public class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      app.MapHubs(); 
     } 
    } 
} 
  • Добавлено <add key="owin:AppStartup" value="My.NameSpace.Startup, App_Code"/> в <appSettings> внутри Web.config

  • Поставьте точку останова в методе Startup.Configuration() и проверить, что оно удавалось и выполняло app.MapHubs без исключений при запуске приложения

  • Я не использую постоянное соединение, поэтому не включал строку app.MapConnection<MyConnection>("/echo"); и не получал каких-либо двусмысленных определений.

    страница приложения
  • чата ссылается на следующий LIBS

    • JQuery-1.8.3.js
    • jquery.signalR-2.0.0-beta2.js
    • <script src='/signalr/hubs'></script>
    • AngularJS v1. 1.5
  • При запуске проекта, /signalr/hubs не найден на странице чата приложение

  • хром Dev инструмент возвращает 500 Internal Server Error для /signalr/hubs вызова на вкладке сети.

  • файловая система не имеет /signalr/hubs каталог

Мой следующий шаг, чтобы увидеть, если я могу создать новое решение с очень основным концентратором и посмотреть, если я могу получить сигнал 2.0 работает. Если это так, я сравню два решения, чтобы понять, что такое различия.

У кого-нибудь есть представление о том, что еще я мог проверить или исследовать, чтобы заставить это работать?

Связанные StackOverflow вопросы с подобным вопросом: one, two

ответ

12

Оказывается проблема была решена путем изменения конфигурации проекта, чтобы использовать локальный веб-сервер IIS вместо Visual Studio Developer Server (Cassini).

Нашел причину, перейдя в /signalr/hubs URL в браузере и видим ошибку сервера, который был

System.PlatformNotSupportedException: This operation requires IIS integrated pipeline mode.

Некоторые прибегая к помощи превратили этот page который сказал, что ошибка была вызвана ASP.NET сервера разработки не поддерживающий интегрированный режим трубопровода.

Вы можете изменить сервер, щелкнув правой кнопкой мыши на проекте, выбрать свойства, нажать вкладку «Веб» и в разделе «Сервер» выбрать «Использовать локальный веб-сервер IIS».

+0

Вы спасли мой день! – Christopher

+0

Что странно, мой вариант уже установлен на IIS Express (Visual Studio 2013). Как я получил эту работу, меняется опция на внешний хост, а затем возвращается в IIS Express, и это сработало. – Dev

0

В моем случае IIS был установлен неправильно. Мне просто пришлось переустановить его:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i 
Смежные вопросы