Api Filter

Aşağıda bir exception filter örneğini inceliyor olacağız.

MyErrorResponse.cs

public class MyErrorResponse
    {
        public string ErrorMessage { get; set; }
        public string ErrorAction { get; set; }
        public string ErrorController { get; set; }
    }

Logger.cs

public class Logger
    {
        public static void LogYaz(string message,string messageDetail)
        {
            throw new NotImplementedException();
        }
    }

MyErrorAttribute.cs

public class MyErrorAttribute : ExceptionFilterAttribute
    {
        public override void OnException(HttpActionExecutedContext actionExecutedContext)
        {
            Logger.LogYaz(actionExecutedContext.Exception.Message, actionExecutedContext.Exception.StackTrace);

            MyErrorResponse result = new MyErrorResponse();
            result.ErrorAction = actionExecutedContext.ActionContext.ActionDescriptor.ActionName;
            result.ErrorController = actionExecutedContext.ActionContext.ControllerContext.ControllerDescriptor.ControllerName;
            result.ErrorMessage = actionExecutedContext.Exception.ToString();

            actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(System.Net.HttpStatusCode.BadRequest,result);
        }
    }

ExceptionFilterAttribute’den kalıtım aldıktan sonra override yazıp boşluk bıraktığımızda OnException metotunu otomatik olarak oluşturduğunu göreceğiz. Yine ActionFilterAttribute‘den kalıtım almamız gereken durumlarda (filter yazmak istediğimizde) aynı şekilde OnActionExecuting(Metot çalışmadan önce) ve OnActionExecuted(Metot çalıştıktan sonra) çalışan override edilebilir metotları kullanabiliriz.

Artık kullanmak istediğimiz action veya controller içindeki bütün actionlarda kullanmak istiyorsak da controller üzerine [MyErrorAttribute] ekleyerek filterımızı kullanabiliriz.

Bir cevap yazın