請幫我解決一個問題。 我使用NancyFx和代碼優化,我決定只使用OWIN SelfHost 沒有使用NancyFx SelfHost。 我創建的窗口服務,而我把代碼(的OnStart函數)NancyFx + SignalR自己的主機和Windows服務
_s7Comm = _container.Resolve<IS7Comm>(); // s7 controller class connection _context = Rhs60Hub.HubContext; // hub context // events for send info to hub from s7 _s7Comm.OnErrorEvent += S7CommOnErrorEvent; ...... var startup = _container.Resolve<Startup>(); // use Unity IoC Service = WebApp.Start("http://+:8081/", startup.Configuration);
啓動服務的Windows服務助手的幫助下 - 對一切工作正常。 (OnStop功能)
_s7Comm.OnErrorEvent - = S7CommOnErrorEvent; .....
_s7Comm.Dispose(); //免費對象中的所有任務
Service.Dispose(); //停止nancy
再次啓動 - 初始化分支NancyFX不啓動,但給出異常NullReferenceException。 我的起始類爲Owin
app.UseCors(CorsOptions.AllowAll); app.MapSignalR(「/ signalr」,new HubConfiguration(){EnableDetailedErrors = true,EnableJSONP = true,EnableJavaScriptProxies = true}); app.UseNancy(options => options.Bootstrapper = new Bootstrapper(UnityHelper.GetConfiguredContainer())); < - 這裏的錯誤
對於測試我確定NancyFX的啓動NancyFx SelfHost的幫助 - 一切都很好,開始?停止並重新開始。
(的OnStart功能)
_s7Comm = _container.Resolve(); // s7控制器類連接 _context = Rhs60Hub.HubContext; //集線器上下文
//從s7向集線器發送信息的事件 _s7Comm.OnErrorEvent + = S7CommOnErrorEvent; ......
_host = new NancyHost(new Uri(「http://localhost:8082」),new Bootstrapper(_container));
_host.Start();
var startup = _container.Resolve(); //使用統一的IoC
服務= WebApp.Start( 「http://+:8081/」,startup.Configuration);
,並從啓動類與nancyFx
的定義在哪裏可以在OWIN使用主機有問題刪除字符串? 代碼debuf顯示容器已初始化並且存在所有依賴關係。 我如何發現與依賴不存在?告訴你堆棧跟蹤
> вMicrosoft.Practices.Unity.UnityDefaultBehaviorExtension.SetLifetimeManager( 類型lifetimeType,字符串名稱,LifetimeManager lifetimeManager)\ r \ n
вMicrosoft.Practices.Unity.UnityDefaultBehaviorExtension.OnRegisterInstance (對象發件人,RegisterInstanceEventArgs E)\ r \ n
вSystem.EventHandler1.Invoke(Object sender, TEventArgs e)\r\n
1.Initialise(個)\ r \ n
в Microsoft.Practices.Unity.UnityContainer.RegisterInstance (Type t, String name, Object instance, LifetimeManager lifetime)\r\n
в Microsoft.Practices.Unity.UnityContainerExtensions.RegisterInstance[TInterface](IUnityContainer container, TInterface instance, LifetimeManager lifetimeManager)\r\n
в Nancy.Bootstrappers.Unity.UnityNancyBootstrapper.RegisterBootstrapperTypes(IUnityContainer applicationContainer)\r\n
в Nancy.Bootstrapper.NancyBootstrapperBase
вNancy.Owin.NancyMiddleware.UseNancy(NancyOptions選項個)\ r \ n
вOwin。 AppBuilderExtensions.UseNan CY(IAppBuilder助洗劑,NancyOptions選項個)\ r \ n
вOwin.AppBuilderExtensions.UseNancy(IAppBuilder助洗劑,Action`1配置)\ r \ n
вRHS60SystemService.Startup.Configuration(IAppBuilder應用) вC:\ ...... \ Startup.cs:строка16" 串
串16是
app.UseNancy(選項=> options.Bootstrapper =新引導程序(UnityHelper.GetConfiguredContainer()) );