如何将现有的 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 不知道我已经设置的容器。
解决此问题的最佳方法是什么?我有一些非常粗略的想法,如何使用静态变量一起破解解决方案来保存其中的一些 - 但我讨厌这种想法。代码会很脆弱,操作顺序很容易引入一个微妙的错误。
有没有办法在不让 OWIN 调用上述方法的情况下获取 IAppBuilder 实例?这样我可以在 SignalR 初始化时更好地控制,并且可以将自己的 IoC 传递到配置中。