İlk olarak, web sitesi dizin dosyasını almak için kodu yapıştırın, aşağıdaki gibi:
Bu cümle çalıştırıldıktan sonra, aşağıdaki şekilde gösterildiği gibi, nesnenin boş olduğunu belirten bir istisna atılır:
Neden sıfır alıyorum?
Çünkü bu kodu çalıştıran iş parçacığı, mevcut isteği işleyen mevcut iş parçacığı değildir
Neden başka yerde bulurken boş olmuyor?
Bunun nedeni, ASP.NET programın HttpContext nesnesini kodunuzu çağırmadan önce bahsedilen System.Runtime.Remoting.Messaging.CallContext.HostContext özelliğine ayarlamış olmasıdır.
HttpApplication'ın OnThreadEnter(), ASP adlı dahili bir yöntemi vardır. .NET, örneğin, boru hattının olay işleyicisi çalıştırıldığında veya senkronizasyon bağlamı (AspNetSynchronizationContext) geri çağrı yaptığında, harici kod çağırmadan önce HttpContext'i değiştirmek için bu yöntemi çağırır. İş parçacığının CallContext.HostContext özelliğini değiştirdikten sonra, kodumuz HttpContext referansına erişebilir. Not: HttpContext referansı aslında HttpApplication nesnesinde kaydedilmiştir.
Bu durumda dosyanın mutlak yolunu nasıl elde edebilirim?
Programın kök yolunu almak için System.Web.HttpRuntime.AppDomainAppPath adresine erişebiliriz, ve ardından dosyanın göreli yollarını birleştirin
|