2015-09-18 1 views
0

S'il vous plaît aidez-moi à résoudre un problème. J'utilise NancyFx et pour l'optimisation du code j'ai décidé d'utiliser uniquement OWIN SelfHost sans utiliser NancyFx SelfHost. Je créer des fenêtres service où je place le code (fonction OnStart)NancyFx + SignalR hôte indépendant et service 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); 

service de démarrage avec une aide de service Windows Helper - everythin travaille. Ne vous arrêtez de service, le code (fonction OnStop)

_s7Comm.OnErrorEvent - = S7CommOnErrorEvent; .....

_s7Comm.Dispose(); // libérer toutes les tâches dans l'objet

Service.Dispose(); // arrête nancy

recommencer - branche avec l'initialisation NancyFX ne démarre pas mais donne l'exception NullReferenceException. ma classe de début pour Owin

app.UseCors (CorsOptions.AllowAll); App.MapSignalR ("/ signalr", nouveau HubConfiguration() {EnableDetailedErrors = true, EnableJSONP = true, EnableJavaScriptProxies = true}); app.UseNancy (options => options.Bootstrapper = nouveau Bootstrapper (UnityHelper.GetConfiguredContainer())); < - erreur ici

Pour le test je déterminer début de NancyFX avec l'aide du paquet NancyFx SelfHost - tout est bon, commencer? Arrêtez et restar.

(fonction OnStart)

_s7Comm = _container.Resolve(); // connexion à la classe de contrôleur s7 _context = Rhs60Hub.HubContext; // contexte de concentrateur

// événements pour envoyer des informations au concentrateur à partir de s7 _s7Comm.OnErrorEvent + = S7CommOnErrorEvent; ......

_host = new NancyHost (nouveau Uri ("http://localhost:8082"), nouveau Bootstrapper (_container));

_host.Start();

var démarrage = _container.Resolve(); // utiliser Unity IoC

Service = WebApp.Start ("http://+:8081/", startup.Configuration);

et de supprimer la chaîne de la classe Démarrer avec des définitions pour nancyFx

Où peut-être un problème avec l'hôte d'utilisation dans OWIN? Le code debuf indique que le conteneur est initialisé et que toutes les dépendances sont présentes. Comment je peux découvrir avec dépendance n'est pas présent?Montrez que vous suivi de pile

> в Microsoft.Practices.Unity.UnityDefaultBehaviorExtension.SetLifetimeManager ( type 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 (options NancyOptions) \ r \ n
в Owin. AppBuilderExtensions.UseNan cy (constructeur de IAppBuilder options NancyOptions) \ r \ n
в Owin.AppBuilderExtensions.UseNancy (constructeur IAppBuilder, configuration Action`1) \ r \ n
в RHS60SystemService.Startup.Configuration (app IAppBuilder) в c: \ ...... \ Startup.cs: строка 16" string

chaîne 16 est

app.UseNancy (options => options.Bootstrapper = new Bootstrapper (UnityHelper.GetConfiguredContainer()))

Répondre

0

Quel est le gestionnaire de durée de vie pour les éléments que vous résolvez de Unity? Sont-ils les transient par défaut, ou utilisez-vous autre chose? (Unity) Understanding Lifetime Managers

Quel est le message d'erreur réelle de l'exception (traduit de l'ukrainien/russe, s'il vous plaît;))

êtes-vous/avez besoin de Dispose de l'instance startup vous aussi?

Pouvez-vous supprimer Nancy ou SignalR du code, pour essayer d'établir quel élément de pipeline échoue?