2013-04-10 16 views
5

Microsoft.Web.Administration.ServerManager kullanarak IIS 7'nin temel URL'sini almak mümkün mü? Web Uygulamamın Temel URL'sini Alın

Genellikle bu olacaktır:

http://localhost 

ama programlı almak gerekir.

ServerManager kullanamazsam, en iyi alternatif nedir?

cevap

14

string baseURL = HttpContext.Current.Request.Url.Host'u kullanabilirsiniz.

+0

@ Joe.Net: U karşılama Joe r: Ben Evet, size bir J –

+0

oldu umuyoruz. Cevabımı bilmek beni mutlu etti. –

+0

@ Joe.Net ederiz bu yararlı –

13

Microsoft.Web.Administration.ServerManager'ın kullanımıyla ilgilenenler için, işte bir kod. Bir IIS uygulamasının birden fazla bağlayıcıya sahip olduğunu ve web uygulaması başına birden fazla URL ile sonuçlandığını düşünün.

var siteName = "Default Web Site"; 
var appPath = "MyWebApplication"; 

var serverManager = new ServerManager(); 
var site = serverManager.Sites[siteName]; 
appPath = appPath.StartsWith("/") ? appPath : "/" + appPath; 
var app = site.Applications[appPath]; 

var urls = new List<string>(); 

foreach (var binding in site.Bindings) 
{ 
    var sb = new StringBuilder(); 
    sb.Append(binding.Protocol); 
    sb.Append("://"); 
    if (!string.IsNullOrWhiteSpace(binding.Host)) 
    { 
     sb.Append(binding.Host); 
    } 
    else 
    { 
     if (Equals(binding.EndPoint.Address, IPAddress.Any)) 
     { 
      sb.Append("localhost"); 
     } 
     else 
     { 
      sb.Append(binding.EndPoint.Address); 
     } 

     if (binding.EndPoint.Port != 80) 
     { 
      sb.Append(":"); 
      sb.Append(binding.EndPoint.Port); 
     } 
    } 

    sb.Append(app.Path); 
    urls.Add(sb.ToString()); 
} 
+1

Bunun OP'nin ilgilendiği şeyin aslında olmadığı ortaya çıkıyor. OP'nin kabul edilen cevap olarak "HttpContext.Current" cevabını işaretlediğini fark ettiniz mi? –

+4

İşte bu yüzden cevabı "ilgilenenler için" ile tanıttım. Görüyorsunuz, burada birçok kişi buraya gelip ServerManager'la ilgili bir cevap arıyor, bu yüzden bunun faydalı olabileceğini düşünüyorum. –

+0

Bu şekilde çalışmıyor. ServerManager'la ilgili bir cevap, ServerManager hakkında _question_'a bir cevap olmalıdır. –

İlgili konular