Először illesztsd be a kódot, hogy megkapd a weboldal könyvtárfájlt, a következőként:
A mondat futtatása után kivétel jelenik meg, amely szerint az objektum üres, ahogy az alábbi ábrán látható:
Miért kapok nullat?
Mivel a kódot futtató szál nem az aktuális szál, amely kezeli az aktuális kérést
Miért nem null, ha máshol megszerzed?
Ez azért van, mert ASP.NET program már beállította a HttpContext objektumot a korábban említett System.Runtime.Remoting.Messaging.CallContext.HostContext tulajdonságra, mielőtt a kódot hívta.
A HttpApplication belső módszerrel rendelkezik, az OnThreadEnter(), ASP. A .NET ezt a módszert hívja a HttpContext cseréjére külső kód hívása előtt, például amikor a csővezeték eseménykezelőjét lefuttatják, vagy amikor a szinkronizációs kontextus (AspNetSynchronizationContext) visszahívást hajt végre. Miután a szál CallContext.HostContext tulajdonságát váltotta, a kódunk hozzáférhet a HttpContext hivatkozáshoz. Megjegyzés: A HttpContext hivatkozása valójában a HttpApplication objektumban van elmentve.
Hogyan lehet ebben az esetben megtalálni a fájl abszolút útvonalát?
Elérhetjük a System.Web.HttpRuntime.AppDomainAppPath címet, hogy megkapjuk a program gyökérútját, és akkor a fájl relatív útvonalait fűzzük össze
|