2015-09-18 42 views
0

請幫我解決一個問題。 我使用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.EventHandler 1.Invoke(Object sender, TEventArgs e)\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
1.Initialise(個)\ r \ n
в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()) );

回答

0

什麼是你從Unity解決的項目的終生管理者?它們是默認的transient,還是你在使用別的東西? (Unity) Understanding Lifetime Managers

有什麼異常的實際的錯誤信息(從烏克蘭/俄羅斯翻譯,請;))

你/你需要的startup實例Dispose呢?

您可以從代碼中刪除Nancy或SignalR,嘗試確定哪個管道項目失敗?

相關問題