Indsæt først koden for at hente websitekatalogfilen, som følger:
Efter at have kørt denne sætning vil der blive kastet en undtagelse, der siger, at objektet er tomt, som vist i figuren nedenfor:
Hvorfor får jeg null?
Fordi tråden, der kører denne kode, ikke er den nuværende tråd, der håndterer den aktuelle forespørgsel
Hvorfor er det ikke ugyldigt, når du får det et andet sted?
Dette skyldes, at ASP.NET program allerede har sat HttpContext-objektet til System.Runtime.Remoting.Messaging.CallContext.HostContext-egenskaben, som nævnt tidligere, før det kalder din kode.
HttpApplication har en intern metode, OnThreadEnter(), ASP. .NET kalder denne metode for at skifte HttpContext, før ekstern kode kaldes, for eksempel når pipelinens event handler udføres, eller når synkroniseringskonteksten (AspNetSynchronizationContext) udfører et callback. Efter at have skiftet trådens CallContext.HostContext-egenskab, kan vores kode få adgang til HttpContext-referencen. Bemærk: Henvisningen til HttpContext gemmes faktisk i HttpApplication-objektet.
Hvordan får man den absolutte sti for filen i dette tilfælde?
Vi kan få adgang til System.Web.HttpRuntime.AppDomainAppPath for at få programmets rodsti, og derefter splejser filens relative stier
|