ASP.NET/Mono MVC4 Web API v.1アプリケーション。ASP.NET MVC4 Web APIで未定義のapiメソッド呼び出しをキャッチする方法
未定義のAPIメソッドへの呼び出しを捕捉する方法。 は、ブラウザにhttp://localhost:52216/erp/api/undefinedmethod
戻りエラーを呼び出す:
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http:// localhost:52216/erp/api/undefinedmethod'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'undefinedmethod'.
</MessageDetail>
</Error>
データベースにログインするために、このエラーをキャッチする方法は? 私は質問
How do I log ALL exceptions globally for a C# MVC4 WebAPI app?
からのコードを試してみましたが、のApplication_Errorと例外フィルタコードがまだ実行されず、エラーが ブラウザに返されます。 このエラーをキャッチする方法はありますか?
URLが
'http://localhost:52216/erp/undefinedmethod'
のようなAPIなしの場合のApplication_Errorが適切に実行されます。
VS2013 WebAPIのプロジェクトテンプレートからの設定が使用されているWebAPIの:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
更新
私が変更された答えを試してみました。 APIコントローラはフォームの承認を使用しており、標準[Authorize] 属性で装飾されています。 認証が失敗した場合、標準のXML APIエラーメッセージ
<Error>
<Message>Authorization has been denied for this request.</Message>
</Error>
が発生します。どのようにこのエラーをキャッチする?
このURLを呼び出すと、HTTP 404が届いたと思います。 HTTP 404のカスタムエラーページを作成し、それぞれのコントローラーのデフォルトアクションにエラーを記録することができます。 – Carsten
apiのメソッドと他のコントローラも404の結果ページを返すことができます。彼らは、このページで、shuldがこの形式で発信者に正確に渡した404エラーを説明するjsonコンテンツを提供します。それらはログに記録すべきではないビジネスエラーです。グローバル404エラーページを作成すると、それらのメソッドの結果が無効になります。 – Andrus