2016-03-25 21 views
0

I web api 2 als selbst in einem Windows-Dienst gehostet am Laufen zu stoppen, während der Stopp-I this.webApp.Dispose();Kann nicht Windows-Hosting-Service Web-API

Jedoch rufen sieht dies nicht genug anmutig um den Dienst zu stoppen, wie ich die folgende Ausnahme:

Failed to stop service. System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Net.HttpListenerException: Failed to listen on prefix 'http://+:8080/' because it conflicts with an existing registration on the machine. 
    at System.Net.HttpListener.AddAllPrefixes() 
    at System.Net.HttpListener.Start() 
    at Microsoft.Owin.Host.HttpListener.OwinHttpListener.Start(HttpListener listener, Func`2 appFunc, IList`1 addresses, IDictionary`2 capabilities, Func`2 loggerFactory) 
    at Microsoft.Owin.Host.HttpListener.OwinServerFactory.Create(Func`2 app, IDictionary`2 properties) 
    --- End of inner exception stack trace --- 
    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 
    at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 
    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, Cu... 

So ist die einzige Möglichkeit, den Dienst zu beenden ist PID für diesen Dienst zu bekommen und dann verwendet kill-Prozess.

Gibt es eine Möglichkeit, den Dienst ordnungsgemäß zu beenden, wissend, dass ich keine lange Aufgabe beim Stoppen ausführe?

Antwort

0

herausgefunden, dass während stop() Windows-Dienst ich tatsächlich rief OnStart Ereignis, das die Web-API starten würde, anstatt es zu stoppen.