2017-01-25 8 views
0

Ich habe eine einfache WebApi2-Anwendung, die verschiedene REST-Anforderungen verarbeitet. Es ist im Wesentlichen ein Frontend für verschiedene CRUD-Operationen in einer SQL Server-Datenbank. Bis jetzt habe ich es noch nie außerhalb von Visual Studio ausgeführt und normalerweise mache ich keine Windows-spezifischen Sachen, aber hier bin ich.Starten einer WebApi-Anwendung über eine Windows-Anwendung

Mein Ziel ist es, diese Webapp-Funktionalität in eine Windows-Desktop-Anwendung (oder zumindest in der Lage sein, die Webapp über das Windows-Programm zu steuern), so dass der Benutzer die Webapp starten kann, stoppen Sie, sehen, wer eine Verbindung herstellt es, etc, aber ich habe keine Ahnung, wie man diese bestimmte Reihe von Punkten verbindet. Es ist eigentlich eine ziemlich schwierige Sache zu googeln.

Der WebApp Teil muss auch einige Dinge beim Start (nur Zeichenfolgen, also wenn die Antwort (en) beinhalten verschiedene Systemkommandos ausführen, um die WebApp zu starten/stoppen/etc und ich kann übergeben, was ich brauche irgendwie in einer Befehlszeile, das ist in Ordnung).

Letztendlich ist es das Ziel, dem Benutzer ein Installationsprogramm zu übergeben, und er muss nicht wissen, dass ein Webserver involviert ist, wenn er nicht wirklich will.

Also, wie würde ich diesen Teil erreichen? (Wenn diese Frage zu vage ist, sag mir warum und ich werde sie bei Bedarf ändern).

Antwort

0

Eines der guten Dinge über Web-API ist die Möglichkeit, außerhalb eines Web-Servers wie IIS gehostet werden. Zum Beispiel könnten Sie es in Ihrer Windows Forms-Anwendung hosten. Hier ist ein article with detailed instructions, wie dies zu erreichen ist.

Sie würden eine Startup-Klasse, die für Bootstrapping verwendet wird:

public class Startup 
{ 
    // This code configures Web API. The Startup class is specified as a type 
    // parameter in the WebApp.Start method. 
    public void Configuration(IAppBuilder appBuilder) 
    { 
     // Configure Web API for self-host. 
     HttpConfiguration config = new HttpConfiguration(); 
     config.Routes.MapHttpRoute( 
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     appBuilder.UseWebApi(config); 
    } 
} 

und dann seine nur eine Frage der Hörer des Beginnens:

using (WebApp.Start<Startup>("http://localhost:8080")) 
{ 
    Console.WriteLine("Web Server is running."); 
    Console.WriteLine("Press any key to quit."); 
    Console.ReadLine(); 
} 

Dies wird Ihre Web verfügbar API machen auf Port 8080 lokal und Ihre Anwendung kann HTTP-Anfragen an sie senden.

Also im Grunde sind die Schlüsselwörter, die Sie suchen: self hosting asp.net web api.

Verwandte Themen