LoginSignup
8
2

More than 5 years have passed since last update.

[ASP.NET Core MVC] サービスコレクション(DIコンテナ)の構成方法 AddMvc/AddMvcCore/AddController/AddControllersWithView の違い

Posted at

これはなに?

ASP.Net Coreのサービスコレクション(DIコンテナ)にMVC機能を載せる拡張メソッドはいくつかあります。

  • AddMvcCore
  • AddControllers
  • AddControllersWithView
  • AddMvc

どう違うのかドキュメントがないので、ソースコードから探ってみます。

2019年4月時点の情報です。

TL;DR

拡張メソッド 解説
AddMvcCore 必要最小限のものを追加
AddControllers AddMvcCore + いろいろ(後述)
AddControllersWithView AddControllers + AddViews + AddRazorViewEngine
AddMvc 全部入り AddControllersWithView + AddRazorPages

ソースコードのありか

ソースコード自体はこちらにあります。

AddControllersがやっていること

AddMvcCoreに加えて、以下のことをやっています。

AddApiExplorer();
AddAuthorization();
AddCors();
AddDataAnnotations();
AddFormatterMappings();

なんとなく文字面から想像できるでしょうか。

AddAuthorization 認証/認可周りの処理をやってくれそうです。

AddCors クロスオリジンな処理をやってくれそうです。

AddDataAnnotations モデルの検証(バリデーション)周りをやってくれそうです。

AddFormatterMapping URL文字列と、メディアタイプの関連付けをやってくれるようです。

AddApiExplorer、、は謎ですね。

まとめ

なんとなく雑にわかったのでまとめてみます。

  • Razorビューを使うひと → 全部入りAddMvcを使う
  • ビューが不要なひと → AddControllersAddMvcCoreを使う
  • WebAPIのみなひと → AddControllersAddMvcCoreを使う
8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2