Asp.netコアプロジェクトで私は両方のWeb UIとWeb APIコントローラがあります。 私はhttps://www.devtrends.co.uk/blog/handling-errors-in-asp.net-core-web-apiの記事に続き、startup.csに含ま:どのようにエラー処理アクションで私はWebビューまたはAPI応答を返しますか決定する
app.UseStatusCodePagesWithReExecute("/Error/error/{0}");
app.UseExceptionHandler("/Error/error/500");
とのErrorControllerでアクションを処理する追加のエラー:
[Route("error/{code}")]
public IActionResult Error(int code)
{
return new ObjectResult(new ApiResponse(code));
}
これは、Web APIのではなく、Webページのために良いです。 APIの場合、カスタムオブジェクト(JSONとしてシリアル化されています)を返したいのですが、UIではカスタムビューを返したいと思います。 私は質問がCalledFromApiClientを実装する方法である
public IActionResult Error(int code)
{
if(CalledFromApiClient())
{
return new ObjectResult(new ApiResponse(code));
}
else
return View(“Error”);
}
のようなものを書きたいですか?
apiコントローラをすべてapiサブフォルダ/名前空間に保存し、callstackを使用してAPIコントローラから例外がスローされたかどうかを確認することを検討しています。 それはうまくいくはずですが、うまく見えません。
もっと良い方法はありますか?
チェックヘッダ(コンテントネゴシエーションを)受け入れることを慣例に従うことを前提としています。それがHTMLを求めたら、それを返します – Nkosi