Programavimas

Kaip naudoti veiksmo filtrus ASP.NET Core MVC

„ASP.NET Core MVC“ filtrai leidžia mums vykdyti kodą prieš arba po tam tikrų užklausos apdorojimo vamzdyno etapų. Skirtingi filtrų tipai atitinka skirtingus dujotiekio etapus, nuo autorizacijos iki rezultatų vykdymo.

Pavyzdžiui, galite panaudoti ASP.NET Core MVC veiksmų filtrus, kad vykdytumėte pasirinktinį kodą prieš ir po veiksmo metodo vykdymo. Šiame straipsnyje pateikiama diskusija apie įmontuotus ASP.NET Core MVC filtrus, kodėl jie yra naudingi ir kaip mes galime naudoti veiksmų filtrus savo ASP.NET Core programose.

Filtrai ASP.NET Core MVC

ASP.NET Core MVC yra daug integruotų filtrų. Tai apima:

  • Veiksmo filtrai. Jie vykdomi prieš ir po valdiklio veiksmų metodo vykdymo.
  • „AuthorizationFilters“. Šie filtrai vykdomi užklausos dujotiekio pradžioje. Jie naudojami patvirtinant vartotojo kredencialus, siekiant patikrinti, ar vartotojas yra įgaliotas.
  • „ResourceFilters“. Šie filtrai vykdomi po autorizacijos ir prieš modelio susiejimą. Norėdami pasinaudoti talpykla, galite pasinaudoti „ResourceFilters“ pranašumais.
  • Rezultatų filtrai. Šie filtrai naudojami kodui vykdyti prieš ir po veiksmo metodo „IActionResult“ vykdymo.
  • „ExceptionFilters“. Šie filtrai naudojami tvarkant bet kokias išimtis, atsirandančias dujotiekyje. Galite pasinaudoti „ExceptionFilters“ pranašumais, kad įvykdytumėte išimtį pritaikytą kodą.

Naudojamo filtro tipo pasirinkimas priklauso nuo to, ką bandote atlikti. Pavyzdžiui, jei bandote sutrumpinti užklausą (t. Y. Sustabdyti veiksmo metodo vykdymą ir grąžinti rezultatą anksčiau laiko), naudosite išteklių filtrą. Arba, jei bandote pakeisti veiksmo metodo parametrus ir rezultatą, gautą iš veiksmo metodo, naudokite veiksmo filtrą.

„ActionFilterAttribute“ klasė įgyvendina „IActionFilter“, „IAsyncActionFilter“, „IResultFilter“, „IAsyncResultFilter“ ir „IOrderedFilter“ sąsajas. Galite pasinaudoti šios klasės pranašumais, kad įdiegtumėte metodų filtrą, valdiklio filtrą arba visuotinį filtrą. Mes tai išnagrinėsime vėliau šiame straipsnyje.

Sukurkite ASP.NET Core Web API projektą „Visual Studio 2017“

Pirmiausia sukurkime ASP.NET Core Web API projektą „Visual Studio“. Jei jūsų sistemoje veikia ir veikia „Visual Studio 2017“, atlikite toliau nurodytus veiksmus, kad sukurtumėte ASP.NET Core MVC projektą.

  1. Paleiskite „Visual Studio 2017 IDE“.
  2. Spustelėkite Failas> Naujas> Projektas.
  3. Rodomų šablonų sąraše pasirinkite „ASP.NET Core Web Application (.NET Core)“.
  4. Nurodykite projekto pavadinimą.
  5. Spustelėkite Gerai, kad išsaugotumėte projektą.
  6. Bus parodytas naujas langas „New .NET Core Web Application…“.
  7. Viršuje esančiame išskleidžiamajame sąraše pasirinkite .NET vykdymo laiką ir ASP.NET Core 2.1 (arba naujesnę).
  8. Kaip projekto šabloną pasirinkite „Web Application (Model-View-Controller)“.
  9. Įsitikinkite, kad nepažymėti žymės langeliai „Įgalinti„ Docker “palaikymą“ ir „Konfigūruoti HTTPS“. Čia nenaudosime šių funkcijų.
  10. Įsitikinkite, kad pasirinkta „Nėra autentifikavimo“. Čia taip pat nenaudosime autentifikavimo.

Tai sukurs naują „ASP.NET Core MVC“ projektą „Visual Studio“. Mes naudosime šį projektą savo veiksmų filtrams įdiegti tolesniuose skyriuose.

Sukurkite pasirinktinį veiksmų filtrą ASP.NET Core MVC

Norėdami pasinaudoti daugkartinio naudojimo kodu prieš arba po veiksmo metodo vykdymo, galite pasinaudoti pasirinktinių veiksmų filtrų pranašumais. Norėdami išplėsti pasirinktinius filtrus, galite išplėsti šias abstrakčias pagrindines klases. Atkreipkite dėmesį, kad kiekviena iš šių abstrakčių klasių praplečia atributų klasę.

  • „ActionFilterAttribute“
  • ResultFilterAttribute
  • ExceptionFilterAttribute
  • „ServiceFilterAttribute“
  • TypeFilterAttribute

Taip pat galite išplėsti „IActionFilter“ sąsają ir įdiegti jos metodus, kad sukurtumėte pasirinktinį filtrą. Galite sukurti tiek sinchroninius, tiek asinchroninius filtrus.

Sukurkite sinchroninio veiksmo filtrą sistemoje ASP.NET Core MVC

Šis kodo fragmentas iliustruoja, kaip sinchroninio veiksmo filtrą galima sukurti praplečiant „IActionFilter“ sąsają ir įgyvendinant „OnActionExecuting“ ir „OnActionExecuted“ metodus.

viešoji klasė „SimpleActionFilter“: „IActionFilter“

    {

public void „OnActionExecuting“ („ActionExecutingContext“ kontekstas)

        {

// šis metodas bus vykdomas prieš vykdant veiksmo metodą

        }

public void „OnActionExecuted“ (kontekstas „ActionExecutedContext“)

        {

// šis metodas bus vykdomas atlikus veiksmo metodą

        }

    }

Sukurkite asinchroninį veiksmų filtrą ASP.NET Core MVC

Norėdami sukurti asinchroninį veiksmų filtrą, galite išplėsti IAsyncActionFilter sąsają ir įdiegti OnActionExecutionAsync metodą, kaip parodyta žemiau esančiame kodo fragmente.

viešoji klasė „SimpleAsyncActionFilter“: „IAsyncActionFilter“

    {

viešoji asinchroninė užduotis „OnActionExecutionAsync“ („ActionExecutingContext“ kontekstas,

Kitas „ActionExecutionDelegate“)

        {

// čia parašytas kodas bus vykdomas prieš vykdant veiksmo metodą

laukti kito ();

// čia parašytas kodas bus vykdomas atlikus veiksmo metodą

        }

    }

Pridėkite veiksmo filtrą „ConfigureServices“ metodu, esančiu ASP.NET Core

Galite pridėti filtrus skirtingais taikymo srities lygiais. Tai apima veiksmų sritį, valdiklio sritį ir visuotinę sritį. Šis kodo fragmentas parodo, kaip galite pridėti filtrą visuotinėje srityje. Atkreipkite dėmesį, kaip aukščiau įdiegtas pasirinktinių veiksmų filtras pridedamas prie filtrų rinkinio „Startup“ klasės „ConfigureServices“. Atminkite, kad filtras įtraukiamas į filtrų rinkinį pagal egzempliorių.

paslaugos.AddMvc (parinktys =>

            {

parinktys.Filters.Add (naujas SimpleAsyncActionFilter ());

}). „SetCompatibilityVersion“ („CompatibilityVersion.Version_2_1“);

Taip pat galite pridėti filtrą pagal tipą, kaip parodyta žemiau esančiame kodo fragmente.

paslaugos.AddMvc (parinktys =>

            {

parinktys.Filters.Add (typeof (SimpleAsyncActionFilter));

}). „SetCompatibilityVersion“ („CompatibilityVersion.Version_2_1“);

Filtrai leidžia vykdyti kodą prieš arba po konkretaus užklausos apdorojimo vamzdyno taško. Vienas iš puikių naujų ASP.NET Core MVC veiksmų filtrų patobulinimų yra galimybė nurodyti filtro vykdymo tvarką HTTP užklausų vamzdyne. Mes išnagrinėsime tai ir daugelį kitų ASP.NET Core MVC filtrų funkcijų būsimame įraše.

$config[zx-auto] not found$config[zx-overlay] not found