请帮我解决问题。 我使用NancyFx并进行代码优化,我决定只使用OWIN SelfHost 没有使用NancyFx SelfHost。 我创建了Windows服务,我放置代码(OnStart函数)
_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 Service Helper的帮助下启动服务 - Everythin正在运行。 服务停止,代码(OnStop功能)
_s7Comm.OnErrorEvent - = S7CommOnErrorEvent; .....
_s7Comm.Dispose(); //释放对象中的所有任务
Service.Dispose(); //停止南希
再次启动 - 初始化NancyFX的分支无法启动但会产生异常NullReferenceException。 我的Owin Start Class
app.UseCors(CorsOptions.AllowAll); app.MapSignalR(“/ signalr”,new HubConfiguration(){EnableDetailedErrors = true,EnableJSONP = true,EnableJavaScriptProxies = true}); app.UseNancy(options =&gt; options.Bootstrapper = new Bootstrapper(UnityHelper.GetConfiguredContainer())); &lt; - 这里错误
对于测试我在NancyFx SelfHost包的帮助下确定NancyFX的开始 - 一切都很好,开始?停下来重新开始。
(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(); //使用Unity IoC
Service = WebApp.Start(“http://+:8081/”,startup.Configuration);
并使用nancyFx
的定义从Start类中删除字符串OWIN中使用主机的问题在哪里? 代码debuf显示容器已初始化并且存在所有依赖项。 我怎么能发现依赖不存在?显示堆栈跟踪
&GT; Microsoft.Practices.Unity.UnityDefaultBehaviorExtension.SetLifetimeManager( 输入lifetimeType,String name,LifetimeManager lifetimeManager)\ r \ n
Microsoft.Practices.Unity.UnityDefaultBehaviorExtension.OnRegisterInstance (Object sender,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.UseNancy(IAppBuilder构建器,NancyOptions选项)\ r \ n
Owin.AppBuilderExtensions.UseNancy(IAppBuilder构建器,Action`1配置)\ r \ n
RHS60SystemService.Startup.Configuration(IAppBuilder应用程序) вc:\ ...... \ Startup.cs:строка16“string
字符串16是
app.UseNancy(options =&gt; options.Bootstrapper = new Bootstrapper(UnityHelper.GetConfiguredContainer()));
答案 0 :(得分:0)
您从Unity
解决的项目的终身经理是什么?它们是默认的transient
,还是您正在使用其他内容? (Unity) Understanding Lifetime Managers
异常的实际错误消息是什么(请翻译自乌克兰语/俄语);)
您/您是否还需要Dispose
个startup
个实例?
您可以从代码中删除Nancy或SignalR,以尝试确定哪个管道项失败了吗?