Использование существующего контейнера IoC в SignalR 2.0
Как я могу использовать существующий IoC с SignalR 2.0?
Из учебника кажется, что мне нужно настроить класс для вызова из OWIN через атрибут:
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{
public class Startup
{
public void Configuration(IAppBuilder app /*HOW AM I GONNA GET UNITY CONTAINER HERE?*/)
{
var hubConfig = new HubConfiguration()
{
EnableJSONP = true,
EnableDetailedErrors = true,
EnableJavaScriptProxies = true,
Resolver = new SignalRUnityDependencyResolver(container)
};
// Any connection or hub wire up and configuration should go here
app.MapSignalR(hubConfig);
}
}
}
Проблема здесь в том, что у меня уже есть контейнер, он загружен, и в контейнере есть единичные экземпляры, которые необходимо использовать совместно с приложением MVC, совместно используемым на том же хосте.
Однако проблема в том, что в отличие от ранее, я не могу назватьMapSignalR
метод из моего собственного кода. Скорее мне нужно положиться на OWIN, чтобы сделать это для меня. Однако OWIN не знает о контейнере, который я уже настроил.
Какой лучший способ решить эту проблему? У меня есть несколько очень грубых идей, как собрать решение вместе, используя статические переменные для хранения некоторых из них, но я ненавижу саму мысль об этом. Код будет хрупким, и порядок работы может легко привести к незначительной ошибке.
Есть ли способ получить экземпляр IAppBuilder, не вызывая OWIN вышеупомянутый метод? Таким образом, я могу лучше контролировать, когда SignalR инициализируется, и я могу передать свой собственный IoC в конфигурацию.