2010-11-12 17 views
6

Bu konudaki bir eğiticiyi takip ediyorum http://www.codeproject.com/KB/aspnet/ASPNETService.aspxWebClient.DownloadData (yerel bir DummyPage.aspx için) nasıl kullanılır

Şimdi bu kodlara takılıyorum

private const string DummyPageUrl = 
    "http://localhost/TestCacheTimeout/WebForm1.aspx"; 

private void HitPage() 
{ 
    WebClient client = new WebClient(); 
    client.DownloadData(DummyPageUrl); 
} 

Yerel uygulama adresim "localhost" dan sonra bir port numarası var, bu nasıl alabilirim Tam yol (Application_Start yönteminde yapılabilir)? Her durumda çalışabilmesi için çok genel olmasını istiyorum.

Çok teşekkürler!

UPDATE

Bunu Application_Start denedim ve gayet iyi çalışıyor, ancak IIS7

String path = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/"); 
'e yayınlandığında hemen geri dönüş hatası

cevap

3

yayınlanan zaman hemen hata döndürür nesne: Aksi

var url = new Uri(Request.Url, "/TestCacheTimeout/WebForm1.aspx").AbsoluteUri; 

, bir config diğer sunucunun ayrıntılarını saklamak dosya veya veritabanı ve sadece doğru değeri verin.

Ama daha iyi bir soru şöyle olurdu: http: aracılığıyla kendinize neden? Neden sadece sınıf yöntemi değil? Şahsen ben bunu yapmak için bir harici zamanlanmış iş kullanıyor olacağım.

+1

Tüm yapmaya çalıştığım, çalışmaya devam edebilecek ve zaman içinde bazı şeyler yapmaya devam edebilecek bir hizmeti simüle etmek için söz konusu sitedeki yönergeleri izlemektir. – Leo

+0

Eğer webapp sanal bir direkte çalışıyorsa, 'var url = Request.Url.ToString() 'i kullanabilirsiniz. Substring (0, Request.Url.ToString(). LastIndexOf ('/')) +" /WebForm1.aspx "; –

+0

Bir uygulama klasörünüzün kullanıldığı bir ortama dağıtıyorsanız, bununla ilgili bir sorun var .... – MiloTheGreat

0

Visual Studio'ya yerleşik olan ve varsayılan olarak bağlantı noktası numaralarını değiştirme eğilimi olan ASP.NET geliştirme sunucusunu kullandığınızdan şüpheleniyorum. Bu durumda, her zaman aynı bağlantı noktasını kullanmak için geliştirme sunucusunu yapılandırmayı deneyebilirsiniz, as described here. Sonra sadece bu yüzden gibi, URL'ye port numarasını ekleyin: Sen belki sanal bir uygulama klasörü vardır farklı bir ortamda kullanımına sunulmaya çalışır bir cevap gerek

private const string DummyPageUrl = 
"http://localhost:42001/TestCacheTimeout/WebForm1.aspx"; 
0

.

// r is Request.Url 
var url = new Uri(r, System.Web.VirtualPathUtility.ToAbsolute("~/Folder/folder/page.aspx")).AbsoluteUri; 

Bu, her durumda çalışır ve dağıttığınızda kötü sürprizlerle karşılaşmaz.