Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 20665|Atbildi: 0

[.NET kodols] ASP.NET Core injicē NullReferenceException ar atribūtu Autofac

[Kopēt saiti]
Publicēts 2020-9-12 20:57:21 | | | |
Autofac ir lielisks. NET IoC konteineri. Tas pārvalda atkarības starp klasēm, lai lietojumprogrammu joprojām varētu viegli modificēt, palielinoties mērogam un sarežģītībai. Tas tiek īstenots, apstrādājot parastās .NET klases kā komponentus.
Es arī esmu klišeja par Autofac konteineriem, un esmu uzrakstījis daudz rakstu:

Izmantojiet autofac MVC, lai ieviestu automātisko reģistrāciju
https://www.itsvse.com/thread-8993-1-1.html

Autofac kļūda "Konstatēta cirkulārā komponenta atkarība" novērsta
https://www.itsvse.com/thread-8970-1-1.html

ASP.NET Core izmanto Autofac, lai ieviestu SOK injekciju
https://www.itsvse.com/thread-7563-1-1.html

Autofac komponenta instances tvērums
https://www.itsvse.com/thread-5080-1-1.html

mvc kontroliera Autofac atribūts, kas ievadīts kontrolierī
https://www.itsvse.com/thread-3621-1-1.html

ASP.NET Core atkarības injekcija izmanto IOC konteineru, kas tam pievienots
https://www.itsvse.com/thread-7562-1-1.html

ASP.NET Core izmanto Autofac, lai ieviestu SOK injekciju
https://www.itsvse.com/thread-7563-1-1.html

ASP.NET Core izmanto Autofac, lai ieviestu AOP pārtveršanu
https://www.itsvse.com/thread-7566-1-1.html


Izveidojiet jaunu projektu ASP.NET Core 3.1 un atsaucieties uz ar autofac saistītām pakotnēm, izmantojot nuget, šādi:


Izveidosim jaunu ITest saskarni un ieviešanu, kods ir šāds:




Izveidojiet jaunu BaseController bāzes klases kontrolieri, un citi kontrolieri pārmanto abstrakto klasi, pievienojiet ITest rekvizītu bāzes klasei, un kods ir šāds:

Ļaujiet WeatherForecastController mantot no BaseController abstraktās klases, pievienojot šādu testēšanas metodi:

Startup klases ConfigureContainer metode reģistrē interfeisu un iestata kontroliera atribūta ievadi, kods ir šāds:

Mēģiniet apmeklēt:Hipersaites pieteikšanās ir redzama.

NullReferenceException izņēmums ir citēts tukšajā ziņojumā, kā parādīts šajā attēlā:



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


IzietKonstruktors tiek ievadīts ITest saskarnē, tā metode tiek izsaukta, tests nokārtots, un to var saukt par normālu

Anomāliju cēloņi

Kontroliera ieviešana ir īpašāka, kontrolieris pēc noklusējuma neizšķir un neaktivizē, izmantojot savu konteineru, to pārvalda pats MVC, bet Microsoft nodrošina šo metodi:

Jūs varat likt kontrolierim izmantot savu konteineru, izsaucot AddControllersAsServices() metodi, kuras galvenais avota kods ir šāds:



Metode ConfigureServices noklusējuma startēšanas objektā ir konfigurēta šādi:

Mēs to modificējam, lai:

Vai:

ServiceBasedControllerActivator avota kods ir šāds:

Pēc konfigurēšanas ielādējiet kontrolieri tieši no DI konteinera, kontrolieris parsēs pakalpojumu no Autofac, un mūsu konfigurētā rekvizītu injekcija stāsies spēkā. Kā parādīts zemāk:



Visbeidzot, ir pievienota asp.net kodola avota koda adrese:

Hipersaites pieteikšanās ir redzama.

(Beigas)





Iepriekšējo:Hangfire pievieno datus parasti, bet turpina izpildīt izņēmuma dēļ
Nākamo:Kā parādīt Sqlite datus uzlabotās tabulās ar E4A?
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com