NancyFx + SignalR自托管和Windows服务

时间:2015-09-18 07:11:41

标签: windows service signalr nancy

请帮我解决问题。 我使用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.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.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()));

1 个答案:

答案 0 :(得分:0)

您从Unity解决的项目的终身经理是什么?它们是默认的transient,还是您正在使用其他内容? (Unity) Understanding Lifetime Managers

异常的实际错误消息是什么(请翻译自乌克兰语/俄语);)

您/您是否还需要Disposestartup个实例?

您可以从代码中删除Nancy或SignalR,以尝试确定哪个管道项失败了吗?