我在將近一半的方法中,需要執行一段特定代碼。這段代碼負責將HTTP返回頭中增加一個Header。如果復制粘貼這些代碼實在太低效率了。請問如何寫一個自定義Attribute來實現加了這個Attribute的方法就具有這些特性呢?同時,我也在近一半的方法中(另一半只需要留給ASP.Net自己處理),需要對這個方法Try Catch住,使得發生異常時能夠被我自己捕獲,異常的處理代碼都是相同的。如果復制粘貼這些代碼,實在太低效率了。如何寫一個自定義Attribute來實現加了這個Attribute的方法就具有這些特性呢?
1 回答

莫回無
TA貢獻1865條經驗 獲得超7個贊
1.比如在header加入允許跨域請求
public class AllowOriginAttribute : ActionFilterAttribute{ public override void OnActionExecuting(ActionExecutingContext filterContext) { filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*"); base.OnActionExecuting(filterContext); } }
2.將異常拋給最上層進行統一處理。
寫一個父級Controller,其他Controller集成它,然后重寫這個可統一處理異常
protected override void OnException(ExceptionContext context) { base.OnException(context); //處理異常 context.ExceptionHandled = true; context.HttpContext.Response.Clear(); context.HttpContext.Response.StatusCode = GetStatusCodeForException(context); context.Result = ...//判斷是否是json,返回不同的結果 context.HttpContext.Response.TrySkipIisCustomErrors = true; }
- 1 回答
- 0 關注
- 223 瀏覽
添加回答
舉報
0/150
提交
取消