首先必須要了解整個 Action 在觸發時,會執行哪一些 Filter:
依上圖來看,事件的紀錄,不管是否產生錯誤,都可以在 OnActionExecuted 紀錄。
接下來說明一下在 ASP.NET MVC 4 WebApi 中 設置過程。
1.
新增一個類別檔在 Filters 底下,暫名為 WebApiActionFilterAttribute.cs,內容程式碼為:namespace EnterprisePortal.Filters
{
using System;
using System.Net;
using System.Net.Http;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;
using EnterprisePortal.Models;
public class WebApiActionFilterAttribute : ActionFilterAttribute
{
private const string LogTableName = "Logs";
public override void OnActionExecuting(HttpActionContext actionContext)
{
}
public override void OnActionExecuted(HttpActionExecutedContext context)
{
... 紀錄 Log,狀態都在 context 可以找到
}
}
}
2.
最後直接在你的 BaseApiController 中類別上加上 [WebApiActionFilter],或者直接在 Global.asax 註冊,程式碼如下:using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using EnterprisePortal.Models;
using EnterprisePortal.Filters;
namespace EnterprisePortal.Controllers
{
[WebApiActionFilter]
public class BaseApiController : ApiController
{
protected DefaultConnection db = new DefaultConnection();
}
}
3.
測試吧! 隨便在一個 Action 丟出引數為無效的錯誤:public IEnumerableGet() { throw new ArgumentException(); return new string[] { "value1", "value2" }; }


沒有留言 :
張貼留言