Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 20665|Vastaus: 0

[.NET Core] ASP.NET Core injektoi NullReferenceExceptioniin Autofac-attribuutin

[Kopioi linkki]
Julkaistu 2020-9-12 20:57:21 | | | |
Autofac on mahtava. NET IoC -kontteja. Se hallinnoi luokkien välisiä riippuvuuksia, jotta sovellusta voidaan silti helposti muokata skaalauksen ja monimutkaisuuden kasvaessa. Se toteutetaan käsittelemällä tavallisia .NET-luokkia komponentteina.
Olen myös kliseinen Autofac-konttien suhteen, ja olen kirjoittanut paljon artikkeleita:

Käytä autofacia MVC:ssä automaattisen rekisteröinnin toteuttamiseen
https://www.itsvse.com/thread-8993-1-1.html

Autofac "Kiertokomponenttiriippuvuus havaittu" -virhe ratkaistu
https://www.itsvse.com/thread-8970-1-1.html

ASP.NET Core käyttää Autofacia IOC-injektion toteuttamiseen
https://www.itsvse.com/thread-7563-1-1.html

Autofac-komponentin instanssilaajuus
https://www.itsvse.com/thread-5080-1-1.html

mvc Controller Autofac -attribuutti injektoituna ohjaimeen
https://www.itsvse.com/thread-3621-1-1.html

ASP.NET Ytimen riippuvuuden injektio käyttää mukana tulevaa IOC-säiliötä
https://www.itsvse.com/thread-7562-1-1.html

ASP.NET Core käyttää Autofacia IOC-injektion toteuttamiseen
https://www.itsvse.com/thread-7563-1-1.html

ASP.NET Core käyttää Autofacia toteuttaakseen AOP:n sieppauksen
https://www.itsvse.com/thread-7566-1-1.html


Luo uusi projekti ASP.NET Core 3.1 ja viittaa autofac-aiheisiin paketteihin nugetin kautta seuraavasti:


Luodaan uusi ITest-rajapinta ja toteutus, koodi on seuraava:




Luo uusi BaseController-perusluokan ohjain, ja muut ohjaimet perivät abstraktin luokan, lisää ITest-ominaisuus perusluokkaan, ja koodi on seuraava:

Annetaan WeatherForecastControllerin periä BaseController-abstrakti luokka, lisäten seuraavan testimetodin:

ConfigureContainer-menetelmä Startup-luokassa rekisteröi rajapinnan ja asettaa ohjaimen attribuutin syötteen, koodi on seuraava:

Yritä käydä katsomassa:Hyperlinkin kirjautuminen on näkyvissä.

NullReferenceException-poikkeus lainataan tyhjässä viestissä, kuten seuraavassa kuvassa on esitetty:



NullReferenceException: Object reference not set to an instance of an object.


PassiKonstruktori injektoidaan ITest-rajapintaan, sen menetelmä kutsutaan, testi läpäisee ja se voidaan kutsua normaalisti

Poikkeavuuksien syyt

Controllerin toteutus on erityisempi, Controller ei Resolve&Activate oletuksena oman konttinsa kautta, vaan sitä hallinnoi MVC itse, mutta Microsoft tarjoaa tämän menetelmän:

Voit saada ohjaimen käyttämään omaa säiliötään kutsumalla AddControllersAsServices()-metodin, jonka päälähdekoodi on seuraava:



ConfigureServices-metodi oletuskäynnistys-objektissa on konfiguroitu seuraavasti:

Muokkaamme sitä seuraavasti:

Tai:

ServiceBasedControllerActivatorin lähdekoodi on seuraava:

Kun säädin on konfiguroitu, lataa ohjain suoraan DI-kontista, ohjain jäsentää palvelun Autofacista, ja konfiguroitu ominaisuusinjektio astuu voimaan. Kuten alla on esitetty:



Lopuksi ytimen lähdekoodiosoite asp.net liitetään:

Hyperlinkin kirjautuminen on näkyvissä.

(Loppu)





Edellinen:Hangfire lisää dataa normaalisti, mutta jatkaa suoritusta poikkeuksen vuoksi
Seuraava:Kuinka näyttää Sqlite-data edistyneissä taulukoissa E4A:lla?
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com