.Net Core Üzerinde ActionFilter Kullanımı

IActionFilter , WebApi eylem yöntemi yürütüldüğünde mantığı yürütmek için uygulanabilen ve daha sonra bir .NET Core WebApi projesine eklenebilen temiz bir ara birimdir.

Bir ActionFilter metodu şöyle görünebilir:

public class ActionFilterMetodumuz :Attribute, IActionFilter
{
    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
    }

    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
    }
}

Bu kendi başına hiçbir şey yapmaz. Ama yine de onu Startup.cs'ye ekleyelim.

Ekleme işlemi sonrasında Startup.cs aşağıdaki gibi görünmektedir.

  public void ConfigureServices(IServiceCollection services)
        {
            services
                .AddMvc(x =>
                {
                    x.Filters.AddService<ActionFilterMetodumuz >();
}) .SetCompatibilityVersion(CompatibilityVersion.Version_2_2); services.AddScoped<ActionFilterMetodumuz >();
}

Oluşturduğumuz metodun içini doldurursak:

using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Routing;
using System;
using System.Diagnostics;

namespace App.Palan.Filters
{
    public class ActionFilterMetodumuz :Attribute, IActionFilter
    {
        public void OnActionExecuted(ActionExecutedContext filterContext)
        {
            Log("OnActionExecuted", filterContext.RouteData);
        }
        public void OnActionExecuting(ActionExecutingContext filterContext)
        {
            Log("OnResultExecuting", filterContext.RouteData);
        }
        private void Log(string methodName, RouteData routeData)
        {
            var controllerName = routeData.Values["controller"];
            var actionName = routeData.Values["action"];
            var message = String.Format("{0} controller:{1} action:{2}", methodName, controllerName, actionName);
            Debug.WriteLine(message, "Action Filter Log");
        }
    }
}
Yukarıda görüldüğü üzere,  OnActionExecuted ve OnActionExecuting fonksiyonlarının filterContex datası Log isimli fonksiyona giderek ilgili Action ve Control nesnelerinin bilgilerini log olarak yazdırmamızı sağlamaktadır.

Dilersekte Startup.cs hiç güncellemeden Attibute kullanarak ilgili kullanacağımız Control veya Action un baş tarafına ilgili filtreyi ekleye biliriz.

[ActionFilterMetodumuz]

Yorumlar

Bu blogdaki popüler yayınlar

Asp.Net ile Uyarı Mesajları Vermek (msgbox)

Asp.Net ile T.C. Kimlik Doğrulama (Mernis) Web Service ile

Asp.Net Eval Kullanımı