2016-08-17 2 views
1

Ich habe ein WebApi namens MyWebApi-Projekt, das auf Port 42000 im Debug-Modus ausgeführt wird. Ich habe eine Konsolenanwendung mit Owin MyWebApi unter Verwendung der folgenden Technik zu bewirten:So stoppen Sie das WebApi-Projekt von Owin WebApp

static void Main(string[] args) 
{    
    using (WebApp.Start<WebApi.Startup>("http://localhost:9000/")) 
    { 
     Console.WriteLine("Server is running..."); 
     Console.WriteLine("Press Enter key to stop it."); 
     Console.ReadKey(); 
    } 

    Console.WriteLine("Server is shutting down..."); 
} 

Alles gut funktionieren. Ich kann Daten von beiden Häfen 9000 und 42000 holen und setzen. Nachdem ich meine Konsole stoppe, kann ich noch Daten vom Hafen 42000 posten und erhalten. Gibt es irgendeine Weise, den MyWebApi zu stoppen, gerade wie wir das Debuggen direkt vom WepApi Projekt stoppen?

Dank,

Austin

Antwort

1

Versuchen Sie webApp Entsorgung:

using (var _webApp=WebApp.Start<WebApi.Startup>("http://localhost:9000/")) 
{ 
    Console.WriteLine("Server is running..."); 
    Console.WriteLine("Press Enter key to stop it."); 
    Console.ReadKey(); 
    _webApp.Dispose();// Add this 
} 

Console.WriteLine("Server is shutting down..."); 
+0

Ich habe versucht, die WebApp manuell zu disponentieren und das WebApi auf Port 42000 läuft noch. Die dispose-Methode stoppt den Server, der nur auf Port 9000 läuft. – AustinTX

+0

Aber wenn Sie diese Web-App hosten, werden beide Ports benötigt? Ich sehe nicht wie. Sind Sie sicher, dass es sich nicht um eine alte App handelt, die Sie früher mit Port 42000 ausgeführt haben? – octavioccl

+0

Nur klarstellen: Die Konsolen-Host-App hat keine anderen Codes als die Hauptmethode, die den vorhandenen WebApi hostet. Nach dem Start der Konsolen-App kann ich mit beiden Ports sprechen: http: // localhost: 9000/api/Benutzer/get/5 ==> Gültig http: // localhost: 42000/api/users/get/5 ==> Gültig Nach dem Ausschalten der Konsole http: // localhost: 9000/api/Benutzer/get/5 ==> Ungültige http: // localhost: 42000/api/users/get/5 == > Gültig – AustinTX

0
public class Startup 
    { 
     private static readonly IUnityContainer _container = UnityHelpers.GetConfiguredContainer(); 

     public static void StartServer() 
     { 
      string baseAddress = "http://localhost:8081/"; 
      var startup = _container.Resolve<Startup>(); 
      IDisposable webApplication = WebApp.Start(baseAddress, startup.Configuration); 

      try 
      { 
       Console.WriteLine("Started..."); 

       Console.ReadKey(); 
      } 
      finally 
      { 
       webApplication.Dispose(); 
      } 
     }   
    } 

SELF HOST WEBAPI WITH OWIN AND UNITY

webApplication.Dispose(); - Webapi-Server stoppen

+0

Mit der Anweisung wird die WebApp freigegeben, sobald der Benutzer eine beliebige Taste drückt. In diesem Fall wird der einzige Server, der Port 9000 überwacht, entsorgt. Der eigentliche WebApi, der auf Port 42000 gelistet ist, läuft noch. – AustinTX