Я пытаюсь использовать OWIN, SignalR и Autofac в одном проекте.SignalR + Autofac + OWIN: Почему не работает GlobalHost.ConnectionManager.GetHubContext?
Я устанавливаю вещи касаемо signalR следующим образом:
// Create the AutoFac container builder:
var builder = new ContainerBuilder();
// ...[Register various other things in here]...
// register signalR Hubs
builder.RegisterHubs(Assembly.GetExecutingAssembly());
// Build the container:
var container = builder.Build();
// Configure SignalR with the dependency resolver.
app.MapSignalR(new HubConfiguration
{
Resolver = new AutofacDependencyResolver(container)
});
Моя проблема заключается в том, что, когда я использую интеграции Autofac SignalR, я больше не может получить контекст signalR концентратора на сервере (в например, контроллер webapi) и поэтому не может отправлять сообщения со стороны сервера подключенным клиентам. Что-то вроде следующего, как я делаю это, когда я не использую интеграции Autofac signalR:
var hubContext = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
hubContext.Clients.All.notification("Test Message");
Но это не работает, когда я добавить Autofac в микс - я не получаю сообщение об ошибке и Кажется, я получаю hubContext, но называть его на самом деле, похоже, не добираются до клиентов.
Если я прокомментировал использование преобразователя зависимостей для signalR в вызове MapSignalR, вызов GetHubContext снова работает, и сообщения успешно доходят до клиентов signalR, но, конечно, я больше не могу использовать IoC на своих концентраторах. например
// Configure SignalR with the dependency resolver.
app.MapSignalR(new HubConfiguration
{
// Resolver = new AutofacDependencyResolver(container)
});
Может кто-нибудь сказать мне, почему использование AutofacDependencyResolver перестает GlobalHost.ConnectionManager.GetHubContext работать правильно ??
Примечание: Еще одна вещь, которую я попытался это вместо того, чтобы использовать GlobalHost.ConnectionManager.GetHubContext() Я попробовал нагнетание IConnectionManager в контроллер WebAPI, из которого я хочу, чтобы отправить сообщение для клиентов, то вызов GetHubContext на том, но Autofac не смог разрешить IConnectionManager.
Я нашел следующую статью Петра Szmyd, который, видимо, позволяет это:
http://www.szmyd.com.pl/blog/wiring-signalr-with-autofac
, но это, как представляется, на основе устаревших signalR строит, и в то время, как представляется, пакет NuGet для него здесь :
http://www.nuget.org/packages/SignalR.AutoFac/
также кажется хорошо устареть.
[эти] (http://stackoverflow.com/questions/20990308/cannot-pass-a-dependencyresolver-to-mapsignalr-in-a-hubconfiguration) начинают чувствовать себя как [дубликаты] (http: // stackoverflow.com/a/20202040/2001735) –