C#-da pipeline-lərdə filtrləri necə tətbiq edirsiniz? Onların istifadəsinə nümunələr verə bilərsinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
C#-düyünlərində filtrlər sorğunun və ya tapşırığın icrası mərhələlərində müdaxilə və müdaxilə üçün istifadə olunur. ASP.NET Core veb tətbiqlərində onlar idarəetmə metodlarının icrası zamanı və ya digər sorğu emal səviyyələrində əlavə məntiq əlavə etməyə imkan verir.
ASP.NET Core-də filtrlərdən istifadə nümunələri:
-
Doğrulama və İcazə (Authentication/Authorization Filters): İstifadəçinin müəyyən bir əməliyyatı yerinə yetirmək üçün icazəsinin olub-olmadığını müəyyən edir.
// Authorize atributu nümunəsi [Authorize] public class HomeController : Controller { public IActionResult Index() { return View(); } } -
Resurs Filtrləri (Resource Filters): İcazə filtrlərindən sonra ilk icra olunur. Keşləmə edə və ya pipeline-ı dayandıra bilər.
// Keşləmə üçün resurs filtri nümunəsi public class CacheResourceFilter : IResourceFilter { public void OnResourceExecuting(ResourceExecutingContext context) { // Əməliyyat metodundan əvvəl məntiq } public void OnResourceExecuted(ResourceExecutedContext context) { // Əməliyyat metodundan sonra, cavab yazılmadan əvvəl məntiq } } -
Əməliyyat Filtrləri (Action Filters): İdarəetmə metodunun icrası əvvəl və sonra icra olunur. Məlumatların doğrulanması, qeydiyyat və ya parametrlərin və nəticələrin dəyişdirilməsi üçün uyğundur.
// Qeydiyyat üçün Action Filter nümunəsi public class LogActionFilter : IActionFilter { public void OnActionExecuting(ActionExecutingContext context) { // Əməliyyat əvvəlində məntiq Console.WriteLine($"Əməliyyat icra edilir: {context.ActionDescriptor.DisplayName}"); } public void OnActionExecuted(ActionExecutedContext context) { // Əməliyyat sonra məntiq Console.WriteLine($"Əməliyyat icra olundu: {context.ActionDescriptor.DisplayName}"); } } // Action Filter-in metoduna tətbiqi [LogActionFilter] public IActionResult About() { return View(); } -
İstisna Filtrləri (Exception Filters): Əməliyyat metodunun və ya digər filtrlərin icrası zamanı baş verən istisnaları idarə edir.
// Xəta idarə etmək üçün Exception Filter nümunəsi public class CustomExceptionFilter : IExceptionFilter { public void OnException(ExceptionContext context) { // İstisnanın idarə olunması məntiqi context.Result = new ContentResult() { Content = "Xəta baş verdi.", StatusCode = 500 }; context.ExceptionHandled = true; // İstisnanın idarə olunduğunu göstərir } } // Controller-ə Exception Filter tətbiqi [CustomExceptionFilter] public class ErrorController : Controller { public IActionResult Index() { throw new Exception("Nəsə səhv oldu!"); } } -
Nəticə Filtrləri (Result Filters): Əməliyyat nəticəsinin metodundan əvvəl və sonra icra olunur (məsələn, ViewResult, JsonResult və s. icra edilmədən əvvəl və ya sonra).
// Nəticəni dəyişdirmək üçün Result Filter nümunəsi public class CustomResultFilter : IResultFilter { public void OnResultExecuting(ResultExecutingContext context) { // Nəticə metodundan əvvəl məntiq Console.WriteLine($"İcra olunan nəticə tipi: {context.Result.GetType().Name}"); } public void OnResultExecuted(ResultExecutedContext context) { // Nəticə metodundan sonra məntiq Console.WriteLine($"İcra olunan nəticə tipi: {context.Result.GetType().Name}"); } }
Filtrlər qlobal şəkildə (bütün sorğular üçün), idarəetmə səviyyəsində və ya konkret metod səviyyəsində tətbiq oluna bilər. Onların icra sırası tipinə görə müəyyən edilir.