Filter Pipeline da Kısa Devre

Filtre metoduna sağlanan context parametresinde Reult özelliğini ayarlayarak herhangi bir noktada filter pipeline kısa devre yaptırabilirsiniz. Örneğin aşağıdaki Resource Filter filter pipeline ın geri kalanının çalıştırılmasını engeller.


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

namespace FiltersSample.Filters
{
public class ShortCircuitingResourceFilterAttribute : Attribute,
IResourceFilter
{
public void OnResourceExecuting(ResourceExecutingContext context)
{
context.Result = new ContentResult()
{
Content = "Resource unavailable - header should not be set"
};
}

public void OnResourceExecuted(ResourceExecutedContext context)
{
}
}
}

Aşağıdaki kodda ShortCircuitResourceFilter ve AddHeader filtresi SomeResource isimli action metodu hedefler. Fakat dikkat edin, ShortCircuitResourceFilter önce çalışır (çünkü bu bir resource filtresi ve Add Header bir Action filtresi) ve pipeline ı kısa devre yaptırıyor.

AddHeader filter SomeResource action ı için asla çalışmaz.


[AddHeader("Author", "Steve Smith @ardalis")]
public class SampleController : Controller
{
public IActionResult Index()
{
return Content("Examine the headers using developer tools.");
}

[ShortCircuitingResourceFilter]
public IActionResult SomeResource()
{
return Content("Successful access to resource - header should be set.");
}

Reklamlar