Pirmiausia įklijuokite kodą, kad gautumėte svetainės katalogo failą, kaip nurodyta toliau:
Paleidus šį sakinį, bus padaryta išimtis, kad objektas tuščias, kaip parodyta paveikslėlyje žemiau:
Kodėl gaunu nulį?
Kadangi gija, kurioje veikia šis kodas, nėra dabartinė gija, kuri apdoroja dabartinę užklausą
Kodėl jis nėra niekinis, kai jį gaunate kitur?
Taip yra todėl ASP.NET kad prieš iškviesdama kodą programa jau nustatė objektą HttpContext į anksčiau minėtą ypatybę System.Runtime.Remoting.Messaging.CallContext.HostContext.
HttpApplication turi vidinį metodą OnThreadEnter(), ASP. .NET iškviečia šį metodą, kad perjungtų HttpContext prieš iškviečiant išorinį kodą, pvz., kai vykdoma srauto įvykių apdorojimo programa arba kai sinchronizavimo kontekstas (AspNetSynchronizationContext) vykdo atgalinį iškvietimą. Perjungus gijos ypatybę CallContext.HostContext, mūsų kodas gali pasiekti HttpContext nuorodą. Pastaba: Nuoroda į HttpContext iš tikrųjų įrašoma HttpApplication objekte.
Kaip tokiu atveju gauti absoliutų failo kelią?
Galime pasiekti System.Web.HttpRuntime.AppDomainAppPath, kad gautume programos šakninį kelią, tada sujungti santykinius failo kelius
|