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是不一樣的API
'http://localhost:52216/erp/undefinedmethod'
的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控制器正在使用Forms授權,並使用標準[授權] 屬性進行裝飾。 如果授權失敗,標準xml api錯誤信息
<Error>
<Message>Authorization has been denied for this request.</Message>
</Error>
發生。如何捕捉這個錯誤呢?
我想,你在調用這個URL的時候會收到一個HTTP 404。您可以爲HTTP 404創建自定義錯誤頁面,並將錯誤記錄在相應控制器的默認操作中。 – Carsten
api方法和其他控制器也可以返回404個結果頁面。他們在這個頁面中提供了json內容,這些內容正是以這種形式正確地傳遞給調用者的404錯誤。那些是不應該記錄的商業錯誤。創建全局404錯誤頁面會禁用這些方法結果。 – Andrus