2016-05-13 24 views
2

私はOWIN上でWeb APIを実行でき、MVC 5ではできないと言っていますか?MVC 5、Web API And Owin

だから私のプロジェクトで、私はまだ、このようになります。私は私のowin Startup.csを持っている現時点でpublic class WebApiApplication : System.Web.HttpApplication

と私のGlobal.asaxを必要とする:

public void Configuration(IAppBuilder app) 
{ 
    var httpConfig = new HttpConfiguration 
    { 

    }; 


    WebApiConfig.Register(httpConfig); 

    app.UseWebApi(httpConfig); 
    app.UseCors(CorsOptions.AllowAll); 

    RouteConfig.RegisterRoutes(RouteTable.Routes);//MVC Routing 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
} 

はRouteConfig.RegisterRoutes(のRouteTableです。ルート)

私は404

+1

MVC5はOWINを使用しています。 WebApiは完全に不要であった。 vNextはすべてを再び統一します。 vNextの前でさえ、WebApiは、あなたがMVCでいくつかのヘルパーを使ったり、いくつかのナゲットパッケージをインストールしてContent Negotiationのようなものを提供することができなかったということは一度もありませんでした。 –

答えて

1

私はOWINとMVC 5上で実行できるWeb APIが正しいと思いますか?

あなたが求めているものは明らかではないが、OWINは、サーバーではなく、それは段階的に順番にプリプロセス要求に注入するパイプラインを支援するミドルウェアだと、それはWebAPIのか、MVCのバージョンに依存しませんが、あれば、それは依存OWIN仕様が実装されています。

RouteConfig.RegisterRoutes(RouteTable.Routes)は十分ですか?

はいこれはAsp.net MVCでは機能しますが、Web APIでは別の設定クラスにルートを登録する必要があります。通常、WebAPIの構成は、URLが一致いずれかのMVCやWebAPIのルートテンプレートを要求していることを確認し、デフォルトAsp.net WebAPIのテンプレート(> vs2013)

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // Web API routes 
     config.MapHttpAttributeRoutes(); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 

に指定されているように見えることがあります。

+0

説明のために、mvcルートは取得されていません。それは非常に奇妙です。私が間違って行ったことを見ることはできません。 –

5

はい、あなたは正しい取得する任意のMVCのルートを参照するたびに、(ASP.NET 4に基づいて)MVC 5は、それが自己ホストすることはできません、IISが必要です。 MVC 6(ASP.NET 5に基づいており、現在ASP.NET Core 1と呼ばれています)にはこの制限はありません。セルフホスティングが必要な場合は、ASP.NET Core 1(これは信じられないほど素晴らしい)で遊ぶか、今すぐRTMが必要な場合はWebAPIを使用してください。

関連する問題