2017-01-13 1 views
0

Ich versuche, Web-API selbst zu hosten. Es funktioniert gut, wenn ich Anfragen über mein Programm, wo ist API-Controller aufrufen. Aber ich kann keine Anfrage über den Postman Client stellen. Was könnte das Problem sein?OWIN Self-Host + Web-API-Verbindung kann keine Anfragen über Postbote

Api-Controller

public class MyApiController : ApiController 
{ 
    public string Get() 
    { 
     return "Get"; 
    } 
} 

Startup.cs

public class Startup 
{ 
    public void Configuration(IAppBuilder appBuilder) 
    { 
     var config = new HttpConfiguration(); 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
     appBuilder.UseWebApi(config); 
    } 
} 

Program.cs

class Program 
{ 
    static void Main(string[] args) 
    { 
     string url = "http://localhost:44300/"; 
     using (WebApp.Start<Startup>(url)) 
     { 
      var client = new HttpClient(); 

      var response = client.GetAsync(url + "api/myapi").Result; 

      Console.WriteLine(response.Content.ReadAsStringAsync().Result); 
     } 
     Console.ReadLine(); 
    } 
} 
+0

Versuchen Sie, die API im selben Programm zu lesen, in dem Sie sie hosten? – Fals

+0

Können Sie bitte die Anfrage posten, die Sie verwenden, um 'Get()' aufzurufen? –

+0

Wenn Sie sagen, dass Sie keine Anfrage durch den Postboten machen können, welchen Fehlercode gibt Ihnen der Postbote? –

Antwort

0

Es sieht aus wie Ihre Probleme sind in Ihrer Hauptmethode. In C# erstellt die using-Anweisung (link) eine Ressource, führt den Code im Block aus und verfügt dann über die Ressource.

In Ihrem veröffentlichten Beispiel wird Ihre WebApp direkt nach dem Drucken der Antwort auf die Konsole (und bevor Sie in der Lage sind, Anfragen mit Ihrem Browser zu stellen) entsorgt.

Diese Änderungen sollten es Ihnen ermöglichen, die WebApp beizubehalten, um mit dem Framework zu experimentieren.

class Program 
{ 
    static void Main(string[] args) 
    { 
     string url = "http://localhost:44300/"; 
     using (WebApp.Start<Startup>(url)) 
     { 
      var client = new HttpClient(); 

      var response = client.GetAsync(url + "api/myapi").Result; 

      Console.WriteLine(response.Content.ReadAsStringAsync().Result); 
      Console.WriteLine("WebApp Ready"); 
      Console.ReadLine(); 
     } 
     Console.WriteLine("WebApp disposed."); 
     Console.ReadLine(); 
    } 
} 
Verwandte Themen