2013-04-09 3 views
2

У меня был концентратор, размещенный в консольном приложении с подключенным к нему WPF-приложением. Все прошло отлично. Затем я переместил концентратор в отдельный проект и добавил ссылку от хоста на новый проект. Теперь я получаю 500 ошибок, без каких-либо других деталей.Signalr Hub в отдельной Dll

Есть ли что-то другое, что нужно сделать для размещения концентратора из другого пространства для сборки/имен?

Редактировать: Я попробовал несколько вещей после открытия вопроса. Вот что я пробовал до сих пор:

  • Установка атрибута HubName. - Не работал.
  • Передача полного пространства имен + класса в HubConnection.CreateHubProxy. - Не работал.
  • Помещение моего класса хаба в тот же проект, но другое пространство имен. Это сработало.

Вот исключение, которое возвращается. «System.Net.WebException: Удаленный сервер возвратил ошибку:. (500) Внутренняя ошибка сервера на System.Net.HttpWebRequest.EndGetResponse (IAsyncResult AsyncResult) на Microsoft.AspNet.SignalR.Client.Http.HttpHelper <. > c_ DisplayClass2.b _0 (IAsyncResult ар) в System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func 2 EndFunction, действие 1 endAction, Task 1 обещание, Boolean requiresSynchronization)»

ответ

0

Try, чтобы увидеть ответное сообщение HTTP

 try 
     { 
      hubConnection.Start().Wait(); 
     } 
     catch (Exception error) 
     { 
      if (error.InnerException is WebException) 
      { 
       WebException webError = (WebException)error.InnerException; 
       Console.WriteLine(webError.Status); 
       Console.WriteLine(webError.Response); 
      } 
     } 
+0

Это выписывает: ProtocolError System.Net.HttpWebResponse –

0

Вы перевели свой звонок, чтобы зарегистрировать концентраторы в новой dll? То есть следующие потребности быть в вашем новом проекте (но до сих пор называют от global.asax):

RouteTable.Routes.MapHubs(); 

Вы, вероятно, также необходимо использовать [атрибут WebActivator PreApplicationStart] (http://msdn.microsoft.com/en-us/library/system.web.preapplicationstartmethodattribute.aspx) в новом классе RegisterHubs для обеспечения его зарегистрировано во времени

+0

Вызов MapHubs по-прежнему присутствует в хосте. Я знаю, что концентратор регистрируется до первого вызова, потому что я запускаю хост перед запуском клиента. –

+0

Ах да, извините, похоже, я совсем не тронул ваш вопрос. Позвольте мне подумать – ChrisT

0

Убедитесь отдельная DLL имеет ссылку на Microsoft.CSharp.dll - что требуется для кода dynamic.

Смежные вопросы