Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 20665|Svar: 0

[.NET Core] ASP.NET Core injicerer NullReferenceException med Autofac-attributten

[Kopier link]
Opslået den 12-9-2020 kl. 20:57:21 | | | |
Autofac er fantastisk. NET IoC-containere. Den håndterer afhængighederne mellem klasser, så applikationen stadig nemt kan ændres, efterhånden som skalaen og kompleksiteten øges. Det implementeres ved at behandle almindelige .NET-klasser som komponenter.
Jeg er også en kliché omkring Autofac-beholdere, og jeg har skrevet mange artikler:

Brug autofac i MVC til at implementere automatisk registrering
https://www.itsvse.com/thread-8993-1-1.html

Autofac "Circular component dependency detected" fejl løst
https://www.itsvse.com/thread-8970-1-1.html

ASP.NET Core bruger Autofac til at implementere IOC-injektion
https://www.itsvse.com/thread-7563-1-1.html

Instansomfanget af autofac-komponenten
https://www.itsvse.com/thread-5080-1-1.html

mvc Controller Autofac-attribut injiceret i controlleren
https://www.itsvse.com/thread-3621-1-1.html

ASP.NET Core-afhængighedsinjektion bruger IOC-containeren, der følger med
https://www.itsvse.com/thread-7562-1-1.html

ASP.NET Core bruger Autofac til at implementere IOC-injektion
https://www.itsvse.com/thread-7563-1-1.html

ASP.NET Core bruger Autofac til at implementere AOP-opsnapning
https://www.itsvse.com/thread-7566-1-1.html


Opret et nyt projekt ASP.NET Core 3.1 og referer til autofac-relaterede pakker via nuget som følger:


Lad os lave en ny ITest-grænseflade og implementering, koden er som følger:




Opret en ny BaseController-baseklasse-controller, og andre controllere arver den abstrakte klasse, tilføjer ITest-egenskaben til baseklassen, og koden er som følger:

Lad WeatherForecastController arve fra BaseController-abstraktklassen og tilføje følgende testmetode:

ConfigureContainer-metoden i Startup-klassen registrerer interfacet og sætter controller-attributinputtet, koden er som følger:

Prøv at besøge:Hyperlink-login er synlig.

NullReferenceException-undtagelsen er citeret i den tomme besked, som vist i følgende figur:



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


PasKonstruktøren injiceres i ITest-grænsefladen, dens metode kaldes, testen består, og den kan kaldes normalt

Årsager til anomalier

Implementeringen af Controlleren er mere speciel; Controlleren løser og aktiverer ikke som standard gennem sin egen container, den administreres af MVC selv, men Microsoft tilbyder denne metode:

Du kan få controlleren til at bruge sin egen container ved at kalde AddControllersAsServices()-metoden, hvis hovedkildekode er som følger:



ConfigureServices-metoden i standardobjektet Startup er konfigureret som følger:

Vi ændrer det til:

Eller:

Kildekoden til ServiceBasedControllerActivator er som følger:

Når den er konfigureret, indlæs controlleren direkte fra DI-containeren, controlleren vil parse tjenesten fra Autofac, og den egenskabsindsprøjtning, vi konfigurerede, træder i kraft. Som vist nedenfor:



Endelig vedhæftes kildekodeadressen til asp.net kerne:

Hyperlink-login er synlig.

(Slut)





Tidligere:Hangfire tilføjer data normalt, men fortsætter med at køre på grund af undtagelsen
Næste:Hvordan viser man Sqlite-data i avancerede tabeller med E4A?
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com