See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 20665|Vastuse: 0

[.NET tuum] ASP.NET Core süstib NullReferenceException'i Autofac atribuudiga

[Kopeeri link]
Postitatud 2020-9-12 20:57:21 | | | |
Autofac on suurepärane. NET IoC konteinerid. See haldab klassidevahelisi sõltuvusi, nii et rakendust saab hõlpsasti muuta, kui mastaap ja keerukus kasvavad. See on rakendatud, käsitledes tavalisi .NET klasse komponentidena.
Olen ka Autofaci konteinerite klišee ja olen kirjutanud palju artikleid:

Kasuta autofaci MVC-s automaatse registreerimise rakendamiseks
https://www.itsvse.com/thread-8993-1-1.html

Autofaci "Ringkomponentide sõltuvus tuvastatud" viga lahendatud
https://www.itsvse.com/thread-8970-1-1.html

ASP.NET Core kasutab Autofaci IOC süstimise rakendamiseks
https://www.itsvse.com/thread-7563-1-1.html

Autofac komponendi instantsi ulatus
https://www.itsvse.com/thread-5080-1-1.html

mvc Kontrolleri Autofac atribuut süstitakse kontrollerisse
https://www.itsvse.com/thread-3621-1-1.html

ASP.NET Core sõltuvussüstimine kasutab sellega kaasas olevat IOC konteinerisse
https://www.itsvse.com/thread-7562-1-1.html

ASP.NET Core kasutab Autofaci IOC süstimise rakendamiseks
https://www.itsvse.com/thread-7563-1-1.html

ASP.NET Core kasutab Autofaci AOP pealtkuulamise rakendamiseks
https://www.itsvse.com/thread-7566-1-1.html


Loo uus projekt Core 3.1 ASP.NET ja viidata autofac-teemalistele pakettidele nugeti kaudu järgmiselt:


Loome uue ITest liidese ja rakenduse, kood on järgmine:




Loo uus BaseController baasklassi kontroller, teised kontrollerid pärivad abstraktse klassi, lisa ITest omadus baasklassile ja kood on järgmine:

Las WeatherForecastController pärib BaseController abstraktse klassi, lisades järgmise testimeetodi:

ConfigureContainer meetod Startup-klassis registreerib liidese ja määrab kontrolleri atribuudi sisendi, kood on järgmine:

Proovi külastada:Hüperlingi sisselogimine on nähtav.

NullReferenceException erik on tsiteeritud tühjas sõnumis, nagu näidatud järgmisel joonisel:



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


PassKonstruktor süstitakse ITest liidesesse, selle meetod kutsutakse, test läbib ja seda saab normaalselt kutsuda

Anomaaliate põhjused

Kontrolleri rakendus on erilisem, kontroller ei lahenda ega aktiveeri vaikimisi omaenda konteineri kaudu, seda haldab MVC ise, kuid Microsoft pakub seda meetodit:

Saad panna kontrolleri kasutama oma konteinerit, kutsudes meetodi AddControllersAsServices(), mille peamine lähtekood on järgmine:



ConfigureServices meetod vaikimisi Startup-objektis on konfigureeritud järgmiselt:

Me muudame selle järgmiselt:

Või:

ServiceBasedControllerActivator lähtekood on järgmine:

Kui seade on seadistatud, laadi kontroller otse DI konteinerist, kontroller parsib teenuse Autofacist ja seadistatud omaduste süstimine hakkab kehtima. Nagu allpool näidatud:



Lõpuks lisatakse asp.net tuuma lähtekoodi aadress:

Hüperlingi sisselogimine on nähtav.

(Lõpp)





Eelmine:Hangfire lisab andmeid tavaliselt, kuid jätkab täitmist erandi tõttu
Järgmine:Kuidas kuvada Sqlite andmeid täiustatud tabelites E4A-ga?
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com