Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 14933|Antwoord: 1

[ASP.NET] asp.net Get sitedirectorybestand is leeg

[Link kopiëren]
Geplaatst op 05-01-2018 16:18:49 | | | |
Plak eerst de code om het websitemapbestand te krijgen, als volgt:



Na het uitvoeren van deze zin wordt er een uitzondering gegooid die zegt dat het object leeg is, zoals getoond in de onderstaande figuur:



Waarom krijg ik null?

Omdat de thread die deze code draait niet de huidige thread is die het huidige verzoek afhandelt

Waarom is het niet ongeldig als je het elders krijgt?

Dit komt doordat ASP.NET programma het HttpContext-object al heeft ingesteld op de eerder genoemde eigenschap System.Runtime.Remoting.Messaging.CallContext.HostContext voordat je je code aanroept.

HttpApplication heeft een interne methode OnThreadEnter(), ASP. .NET roept deze methode aan om de HttpContext te wisselen voordat externe code wordt aangehaald, bijvoorbeeld wanneer de event handler van de pipeline wordt uitgevoerd, of wanneer de synchronisatiecontext (AspNetSynchronizationContext) een callback uitvoert. Na het wisselen van de CallContext.HostContext-eigenschap van de thread kan onze code toegang krijgen tot de HttpContext-referentie. Opmerking: De verwijzing naar de HttpContext wordt eigenlijk opgeslagen in het HttpApplication-object.



Hoe krijg je in dit geval het absolute pad van het bestand?

We kunnen System.Web.HttpRuntime.AppDomainAppPath benaderen om het rootpad van het programma te krijgen, en vervolgens de relatieve paden van het bestand samenvoegen





Vorig:Volledige uitleg van de onderliggende kwetsbaarheid van Intel-CPU's: Geen enkele mobiele telefoon/computer ter wereld wordt gespaard
Volgend:Samenvatting van de autofac-creatie-instantiemethodologie
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com