「ApiController
は.NETコアで非推奨になります。私は本当にこれに関する専門的な洞察力が必要です。私は新しいプロジェクトでそれを使うつもりだから。.NETコアでApiControllerが推奨されない
答えて
MVCとWebAPIがASP.NETコアでマージされているので、実際には特定のApiController
クラスが存在します。しかし、MVCのController
クラスでは、ビューやモデルバインディングなど、Web APIだけを開発する場合には必要のない機能が多数用意されています。
あなたが別の何かをしたい場合には、2つのオプションを持っている:
はMicrosoft.AspNetCore.Mvc.CoreパッケージにControllerBase
クラスを使用します。
それとも
あなたApiController
基本クラスを作成します。また、
[Controller]
public abstract class ApiController
{
[ActionContext]
public ActionContext ActionContext { get; set; }
}
MVCコントローラの発見のためのコントローラとしてそれをマークするためにクラスに[Controller]
属性を追加します。ここで重要なのは、プロパティに現在のActionContext
インスタンスを注入[ActionContext]
属性を追加することです。
詳細は“Web API in MVC 6” blogpostを参照してください。
ありがとうございました。 – Viji
実際には、WebApi互換シムパッケージの「ApiControllerより多くのプロパティをバインドするだけですが、それらはすべて、プロパティhttps://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.WebApiCompatShim/ApiController.cs#L36-L43を介して注入されたControlerContextをベースにしていますが、ルート登録のような互換性の高いもの(完全にオプションです)が付属しています。https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.WebApiCompatShim/Routing/WebApiCompatShimRouteBuilderExtensions.cs#L13またはWebApi2 esque属性 – Tseng
ASP.NETコアでは、ASP.NET MVCとASP.NET WepAPIで知られている用語と概念が使用されます。しかし、基本的に完全な新しいフレームワークです。したがって、私たちが単に忘れることのできる概念や基底クラスがいくつかあります。
ASP.NET MVCとASP.NET WebApiは共存するが異なるフレームワークであるため、ApiController
を基本クラスとして使用してコントローラをWebApiコントローラとして指定する必要があります。
ASP.NETコアではこれはもう必要ありません。 Controller
ベースクラスは、Razor ViewsまたはJSONからHTMLを返すアクション(出力フォーマッタXMLおよびその他のフォーマットも可能です)に使用できます。 Controller
ベースクラスも必要ありません。継承のないコントローラとして "Plain Old C#Object"を使用することも可能です。 これは、ApiControllerが存在しないにもかかわらずクライアントにデータを配信するための構造的アプローチが似ていることを概説するデモコントローラの例です。
public class DemoController : Controller
{
public async Task<IActionResult> Action()
{
var model = await _someService.GetPreciousData();
return Ok(model);
}
}
洞察のおかげで – Viji
他にも言及したように、ASP.NET Coreは完全な新しいWebStackであり、以前のASP.NET MVC Webstackと互換性がありません。これは明示的にその名前とバージョン管理に反映されています!
ASP.NETコアとASP.NETコアMVCは、この非互換性を非常に明確にするためにバージョン1.0.0を使用しています。
ASP.NET Coreは、MVCとWebApiを1つの単一のApiにマージしました。
そして、ここであなたが探しているかもしれことだ:
以前のASP.NET MVCやASP.NET WEBAPIアプリケーションから移行する場合、あなたには、いくつかを提供Microsoft.AspNetCore.Mvc.WebApiCompatShim
パッケージをインポートすることもできます以前のバージョンからの移行を容易にする互換性の種類。その中には、ApiController
クラスと新しいWebstack Apiで削除された特定の属性があります。
ただし、これは既存のアプリケーションの移行に役立つだけのことです。新しいアプリケーションを作成するときは、この互換性シムを使用して新しいものを使用しないでください。
マイグレーションのヒント – Viji
- 1. JRDesignStyleでSetFontSizeが推奨されない
- 2. OCR .NET推奨
- 3. 推奨されないコンパイルエラー
- 4. Sequelize推奨されていないエラーメッセージ
- 5. 推奨されるIDEが
- 6. .NETでのリフレクションの使用が推奨されるのはなぜですか?
- 7. 推奨されない警告
- 8. HttpParams推奨されないソリューション
- 9. .NET SOAの商用推奨
- 10. なぜMySQL Blobが推奨されないのですか
- 11. なぜエラー処理が推奨されないのですか?
- 12. Maria DB推奨RAM、ディスク、コア容量?
- 13. SpringHibernateOperationsでsaveOrUpdateAllが推奨されない理由
- 14. クエリのスクリプトが推奨ボックスで実行されない
- 15. Pycharm:コード補完が推奨されていない
- 16. 推奨されるWebストレステストシナリオ
- 17. javadocで推奨されていないメソッド
- 18. Android - 推奨されていないAndroidスタジオでのNDK警告
- 19. 目的C iOS 8で推奨されていないコード
- 20. onsubmitの後にChromeの推奨ボックスがクリアされない
- 21. Javaプラグインが推奨されない理由
- 22. 推奨されないeregiコール、preg_match修正が必要
- 23. Specflow、ステップ定義の推奨コードが表示されない
- 24. 推奨されていませんget_io_service()
- 25. stringWithContentsOfFile推奨されていません
- 26. Solr推奨されていません
- 27. beginSheetForDirectory ...推奨されていません
- 28. 推奨されていませんPlus.PeopleApi.load
- 29. .netコア:Assertは.netコアのC#でサポートされています
- 30. 推奨サイズが異なる
短答:はい。それほど短い答えではありません:Asp.Net MVCとAsp.Net Web APIは、asp.net-coreの1つのコードベースに統合されました。したがって、それらはすべて 'Controller'から継承し、' IActionResult'の実装をすべて返すことができます。 MVCの場合は 'View'、web APIの場合は' Json'です。必要なものに基づいてコアを構成します。 https://docs.asp.net/en/latest/intro.html – Nkosi