我能夠用自己的DI與SignalR 1.13的工作是這樣的:SignalR 2.0在VS2012登記和依賴注入
//Funq container
GlobalHost.DependencyResolver = new FunqDependencyResolver(container);
RouteTable.Routes.MapHubs();
現在有了新的版本2.0,我卡住了。
using Microsoft.Owin;
using Owin;
//SignalR 2.0 no longer uses RouteTable.Routes.MapHubs();
[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat {
public class Startup {
public void Configuration(IAppBuilder app) { app.MapSignalR(); }
}
}
(在VS2013截圖新SignalR 2.0設置)
首先,它是從VS2013一個屏幕從here。我的VS2012 Pro沒有Create New ...-> OWIN Startup class.I手寫一個。但是現在如何調用新的啓動類來取代舊的MapHub()
函數呢?
其次,我使用運行Web項目其餘部分的DI。我現在如何註冊signalR到我的DI?
編輯--------------------------------------------
更多的問題。 我在Global.asax.cs-> Application_Start()中創建了我的DI容器,但SignalR Startup.cs-> Configuration()是自動創建和調用的。我如何將DI容器傳遞給SignalR Startup?
的Global.asax.cs(應用程序啓動時自動此運行)
protected void Application_Start(object sender, EventArgs e)
{
var appHost = new AppHost(); //DI init
appHost.Init();
var container = appHost.Container; //DI container here
var resolver = new FunqDependencyResolver(container);
}
SignalRStarter.cs(應用程序啓動時,這也自動運行)
[assembly: OwinStartup(typeof(WebApp.SignalRStarter))]
namespace WebApp {
public class SignalRStarter {
public FunqDependencyResolver FunqDependencyResolver { get; set; }
public bool EnableDetailedErrors { get; set; }
public void Configuration(IAppBuilder app) {
app.MapSignalR(new HubConfiguration() {
EnableDetailedErrors = EnableDetailedErrors,
Resolver = FunqDependencyResolver
});
}
}
}
請參閱http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/upgrading-signalr-1x-projects-to-20 – davidfowl