2012-05-15 16 views
6

Mevcut Uygulama sanal Yolu alın, ben kullanarak mevcut uygulama yolunu almak çalışıyorum:benim Global.asax.cs ait Application_Start İçinde ASP.Net

var virtualPath = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) 
          + HttpRuntime.AppDomainAppVirtualPath; 

Bu, örneğin döner: http://localhost:99/MySite/

sonra bu URL'yi kullanır ve aşağıdakileri yapın:

var pageToHit = virtualPath + Pages\MyOtherPage.aspx 
var client = new WebClient(); 
client.DownloadData(dummyPageUrl); 

Ben IIS 6 projeyi veya yerleşik web sunucusu Visual Studio çalıştırdığınızda Bütün bunlar iyi, Ancak "System.Web.HttpException: Request bu bağlamda mevcut değil" gibi bir şey IIS 7'de deliriyor.

Bu thread farkındayım: herkes klasik modunda çalışacak şekilde projeyi değiştirmeden yukarıdaki nasıl yapılacağına ilişkin herhangi bir fikri olup olmadığını Request is not available in this context

Ancak, ben merak ediyorum.

+0

Ayrıca, bu, Global.aspx Application_Start'ta tam ana bilgisayar adı + bağlantı noktası numarası nasıl alınır? soru: http://stackoverflow.com/questions/4243270/how-to-get-full-host-name-port-number-in-application-start-of-global-aspx – JamieSee

cevap

5

Entegre modda çalışırken Application_Start içindeki mevcut isteğin mutlak URL'sine erişemezsiniz. HostingEnvironment.ApplicationVirtualPath kullanarak sanal yol adına erişebilir, ancak mutlak bir URL kullanamazsınız. İşte ortak bir çözümü açıklayan an article.

  1. Değişim bu başlatma gerçekleştirilir sağlamak için bir kilit ve a tek kullanarak (önerilir) isteği bağlamı
  2. Application_BeginRequest yılında başlatma gerçekleştirin kullanmayacak şekilde uygulama kodu: makalesinde açıklandığı üzere size 2 olasılık var AppDomain'in tüm ömrü boyunca yalnızca bir kez. İşte bu ikinci yaklaşımı tartışan bir similar thread.
+0

tamam hizmet etmenin bir yolu var mı sayfa manüel mi? örneğin var client = new WebClient(); client.DownloadData (Pages \ DummyPage.aspx) – MaYaN

+0

Hayır, WebClient yöntemi mutlak bir URL gerektirir. –

+0

Anladım. Şimdi Application_BeginRequest'deki sorun, uygulama başlatıldığında, bir kullanıcı sayfaların herhangi birine erişinceye kadar _BeginRequest olayı başlatılmamasıdır. Bu, uygulama başlatılır başlatılmaz sayfayı vurmam gerektiğinden bir sorundur. – MaYaN

İlgili konular