Programmēšana

Kā izmantot darbības filtrus ASP.NET Core MVC

ASP.NET Core MVC filtri ļauj mums izpildīt kodu pirms vai pēc pieprasījuma apstrādes cauruļvada konkrētiem posmiem. Dažādi filtru veidi atbilst dažādiem cauruļvada posmiem, sākot no autorizācijas līdz rezultātu izpildei.

Piemēram, varat izmantot ASP.NET Core MVC darbību filtrus, lai izpildītu pielāgotu kodu pirms un pēc darbības metodes izpildes. Šajā rakstā sniegta diskusija par ASP.NET Core MVC iebūvētajiem filtriem, kāpēc tie ir noderīgi un kā mēs varam izmantot darbību filtrus mūsu ASP.NET Core lietojumprogrammās.

Filtri ASP.NET Core MVC

ASP.NET Core MVC satur daudz iebūvētu filtru. Tie ietver sekojošo:

  • ActionFilters. Tie tiek izpildīti pirms un pēc kontroliera darbības metodes izpildes.
  • AuthorizationFilters. Šie filtri tiek izpildīti pieprasījuma cauruļvada sākumā. Tos izmanto, lai pārbaudītu lietotāja akreditācijas datus, lai pārbaudītu, vai lietotājs ir pilnvarots.
  • ResourceFilters. Šie filtri tiek izpildīti pēc autorizācijas un pirms modeļa saistīšanas. Lai ieviestu kešatmiņu, varat izmantot ResourceFilters priekšrocības.
  • Rezultātu filtri. Šie filtri tiek izmantoti koda izpildei pirms un pēc darbības metodes IActionResult izpildes.
  • ExceptionFilters. Šie filtri tiek izmantoti, lai apstrādātu visus izņēmumus, kas rodas cauruļvadā. Varat izmantot ExceptionFilters priekšrocības, lai izpildītu pielāgotu kodu, kad ir noticis izņēmums.

Izmantojamā filtra veida izvēle ir atkarīga no tā, ko jūs mēģināt paveikt. Piemēram, ja mēģināt saīsināt pieprasījumu (t.i., apturēt darbības metodes izpildi un priekšlaicīgi atgriezt rezultātu), izmantojiet resursu filtru. Alternatīvi, ja jūs mēģināt mainīt darbības metodes parametrus un rezultātu, kas atgriezts no darbības metodes, jūs izmantojat darbības filtru.

Klase ActionFilterAttribute ievieš saskarnes IActionFilter, IAsyncActionFilter, IResultFilter, IAsyncResultFilter un IOrderedFilter. Jūs varat izmantot šīs klases priekšrocības, lai ieviestu metodes filtru, kontroliera filtru vai globālo filtru. Mēs to izskatīsim vēlāk šajā rakstā.

Izveidojiet ASP.NET Core Web API projektu Visual Studio 2017

Vispirms izveidosim ASP.NET Core Web API projektu Visual Studio. Ja Visual Studio 2017 ir izveidota un darbojas jūsu sistēmā, veiciet tālāk norādītās darbības, lai izveidotu ASP.NET Core MVC projektu.

  1. Palaidiet Visual Studio 2017 IDE.
  2. Noklikšķiniet uz Fails> Jauns> Projekts.
  3. Parādīto veidņu sarakstā atlasiet “ASP.NET Core Web Application (.NET Core)”.
  4. Norādiet projekta nosaukumu.
  5. Noklikšķiniet uz Labi, lai saglabātu projektu.
  6. Tiks parādīts jauns logs “New .NET Core Web Application…”.
  7. Augšdaļā esošajā nolaižamajā sarakstā kā izpildlaiku atlasiet .NET Core un ASP.NET Core 2.1 (vai jaunāku).
  8. Kā projekta veidni atlasiet “Web Application (Model-View-Controller)”.
  9. Pārliecinieties, vai nav atzīmētas izvēles rūtiņas “Enable Docker Support” un “Configure for HTTPS”. Mēs šeit neizmantosim šīs funkcijas.
  10. Pārliecinieties, vai ir atlasīta opcija “Nav autentifikācijas”. Arī šeit mēs neizmantosim autentifikāciju.

Tādējādi Visual Studio tiks izveidots jauns ASP.NET Core MVC projekts. Mēs izmantosim šo projektu, lai ieviestu mūsu darbību filtrus turpmākajās sadaļās.

Izveidojiet pielāgotu darbību filtru ASP.NET Core MVC

Varat izmantot pielāgotu darbību filtru priekšrocības, lai izpildītu atkārtoti lietojamu kodu pirms vai pēc darbības metodes izpildes. Lai izveidotu pielāgotus filtrus, varat paplašināt šīs abstraktās bāzes klases. Ņemiet vērā, ka katra no šīm abstraktajām klasēm paplašina klasi Atribūti.

  • ActionFilterAttribute
  • ResultFilterAttribute
  • ExceptionFilterAttribute
  • ServiceFilterAttribute
  • TypeFilterAttribute

Varat arī paplašināt IActionFilter saskarni un ieviest tās metodes, lai izveidotu pielāgotu filtru. Varat izveidot gan sinhronos, gan asinhronos filtrus.

Izveidojiet sinhrono darbību filtru ASP.NET Core MVC

Šis koda fragments parāda, kā var izveidot sinhronas darbības filtru, paplašinot IActionFilter saskarni un ieviešot OnActionExecuting un OnActionExecuted metodes.

publiskā klase SimpleActionFilter: IActionFilter

    {

public void OnActionExecuting (konteksts ActionExecutingContext)

        {

// šī metode tiks izpildīta pirms darbības metodes izpildes

        }

public void OnActionExecuted (konteksts ActionExecutedContext)

        {

// šī metode tiks izpildīta pēc darbības metodes izpildes

        }

    }

Izveidojiet asinhrono darbību filtru ASP.NET Core MVC

Lai izveidotu asinhrono darbību filtru, varat paplašināt IAsyncActionFilter saskarni un ieviest OnActionExecutionAsync metodi, kā parādīts zemāk esošajā koda fragmentā.

publiskā klase SimpleAsyncActionFilter: IAsyncActionFilter

    {

public async Uzdevums OnActionExecutionAsync (ActionExecutingContext konteksts,

Nākamais ActionExecutionDelegate)

        {

// šeit ierakstītais kods tiks izpildīts pirms darbības metodes izpildes

gaidīt nākamo ();

// šeit ierakstītais kods tiks izpildīts pēc darbības metodes izpildes

        }

    }

Pievienojiet darbību filtru ASP.NET Core metodē ConfigureServices

Jūs varat pievienot filtrus dažādos darbības jomās. Tie ietver darbības jomu, kontroliera darbības jomu un globālo darbības jomu. Šis koda fragments parāda, kā jūs varat pievienot filtru globālajā darbības jomā. Ņemiet vērā, kā iepriekš ieviestais pielāgotās darbības filtrs tiek pievienots filtru kolekcijai Startup klases ConfigureServices metodē. Ņemiet vērā, ka filtrs tiek pievienots filtru kolekcijai pa instancēm.

pakalpojumi. AddMvc (opcijas =>

            {

options.Filters.Add (new SimpleAsyncActionFilter ());

}). SetCompatibilityVersion (CompatibilityVersion.Version_2_1);

Varat arī pievienot filtru pēc veida, kā parādīts zemāk esošajā koda fragmentā.

pakalpojumi. AddMvc (opcijas =>

            {

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

}). SetCompatibilityVersion (CompatibilityVersion.Version_2_1);

Filtri ļauj izpildīt kodu pirms vai pēc pieprasījuma apstrādes cauruļvada konkrēta punkta. Viens no lielākajiem jaunajiem ASP.NET Core MVC darbības filtru uzlabojumiem ir iespēja norādīt filtra izpildes kārtību HTTP pieprasījumu cauruļvadā. Mēs izskatīsim šo un daudzas citas ASP.NET Core MVC filtru funkcijas nākamajā ziņojumā.

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