2017-01-13 14 views
0

Web APIを自己ホストしようとしています。それはAPIコントローラがどこにあるのか私のプログラムを通してリクエストを呼び出すとうまく動作します。しかし、私はPostman Clientを通じてリクエストを行うことはできません。何が問題なの?OWIN Self-Host + Web Api接続はPostman経由でリクエストを行うことはできません。

アピコントローラ

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

ホストしている同じプログラムでapiを読み込もうとしていますか? – Fals

+0

'Get()'の呼び出しに使用しているリクエストを投稿できますか? –

+0

あなたは、郵便配達員からリクエストできないと言ったら、郵便配達員はどのようなエラーコードを表示しますか? –

答えて

0

それはあなたのように見えます問題はあなたの主な方法です。 C#では、usingステートメント(link)がリソースを作成し、そのブロックでコードを実行してからリソースを破棄します。

投稿された例では、レスポンスをコンソールに出力した直後(およびブラウザでリクエストできるようになる前)にWebAppが処分されます。

これらの編集では、フレームワークで再生するためにWebAppのスコープを維持することができます。

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(); 
    } 
} 
関連する問題