2013-11-07 2 views
0

Существует документация для использования Autofac с SignalR здесь:SignalR и Autofac: Большинство до метода даты интеграции

https://code.google.com/p/autofac/wiki/SignalRIntegration

Но это, кажется, довольно старый. 2.0 релиз SignalR, похоже, улучшил историю для DI. Далее, как представляется, инструкции по SignalR 2,0 DI:

http://www.asp.net/signalr/overview/signalr-20/extensibility/dependency-injection

Какой способ является предпочтительным и может кто-нибудь дать некоторые указатели на реализацию второго подхода с Autofac? Извините, я относительно новичок и для signalR, и для Autofac.

ответ

1

Вот хороший способ использовать свой собственный распознаватель зависимость:

// This is all done in the initial startup 
var myDependencyResolver = ....; 

app.MapSignalR(new HubConfiguration 
{ 
    Resolver = myDependencyResolver 
}); 

// If you want to use GlobalHost you need to update its resolver. 
GlobalHost.DependencyResolver = myDependencyResolver; 

Это все, что вам нужно нужно сделать.

Надеюсь, это поможет!

+1

Здесь я начинаю путаться. У меня есть существующий веб-проект api, где все настройки IoC выполняются в global.asax Application_Start. Но вызов app.MapSignalR выше в классе запуска OWIN. Как я могу поделиться контейнером IoC между ними? Должна ли устанавливаться функция GlobalHost.DependencyResolver в global.asax без установки HobConfiguration.Resolver в классе OwinStartup? – mutex

+0

С SignalR 2.0.0 вы должны иметь класс запуска Owin (вы больше не используете метод Application_Start). Поэтому я бы рекомендовал вам выполнить всю вашу конфигурацию в конфигурации owin (вместо запуска приложения). –

+1

Спасибо, принят как ответ, так как это работает. Я видел несвязанную проблему, потому что неправильно вызывал метод Autofac RegisterHubs! Любые указатели на перенос конфигурации webapi из Application_Start в Owin? Или это в значительной степени просто вырезать \ вставить? – mutex

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