2017-02-08 59 views
1

この問題は以前に発生している可能性がありますので、重複する可能性があります。Asp.Netコア - MVCとWebAPIのルーティングの違い

ASP.NETコアアプリケーション(MVC)を設定すると、Startup.cs - Configure - app.useMvc()のルートが定義され、マップされます。そして、これは完全に動作します。 しかし、WebAPIが画像になると、具体的に[Route("api/[controller]")を指定する必要があるのはなぜですか?他の方法では、webAPIは属性ルーティングでのみ機能しますか?

設定方法でこのルート設定を処理できないのはなぜですか?以前のMVC/WebAPI(コアではない)では良い選択でした。

何か不足していますか?

+0

アプリケーションまたは別のアプリケーションでmvc&web APIを一緒に使用していますか? –

+0

私は完全に独立したwebapiプロジェクトを持っています。各コントローラレベルの代わりに 'startup.cs'を経由してルーティング設定を行いたいと考えています – Kenz

答えて

0

ASP.NET Core MVCでは、(MVC 5/Web API 2のように)MVCとWeb APIは区別されません。リクエストがViewまたは別の種類のActionResultを返すかどうかにかかわらず、ルーティングは同じように機能するはずです。つまり、属性ルーティングは、ASP.NET Core MVCのデフォルトの規則です。これは、ルーティングロジックをルートに応答するコードに近づけるためです。 Startup.Configureでグローバルルートを設定することは可能ですが(これまで見てきました)、従来の推奨される方法は、コントローラおよび/またはアクションレベルで属性を使用することです。

あなたがグローバルに設定したルートを使用していない特定の(ウェブAPI)アクションの動作を確認している場合は、(他の質問などで)コードを投稿してください私に期待される行動。

+0

*"ルーティングロジックを応答するコードに近づけるため、属性ルーティングはASP.NET Core MVCのデフォルトの規約です*。これがASP.NET Coreチームによって言われた場合は、私の使用のためにこれを参照することができますか? – Kenz

+2

"MVCアプリケーションでは、従来のルーティングと属性ルーティングを混在させることができます。ブラウザ用のHTMLページを提供するコントローラや、REST APIを提供するコントローラの属性ルーティング用の従来のルートを使用するのが一般的です。 https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing#mixed-routingは、私が知る限り近づいています。 – ssmith

+0

しかし、両方のシナリオが正しく動作するasp.net mvc-webapiバックグラウンド、グローバルルート設定、および属性ルーティングから来ているのは苦しいです。 – Kenz

関連する問題