2013-04-10 6 views
5

È possibile ottenere l'URL di base di IIS 7 utilizzando Microsoft.Web.Administration.ServerManager?Ottieni l'URL di base di My Web Application

Tipicamente questo sarebbe:

http://localhost 

ma ho bisogno di ottenere a livello di codice.

Se non riesco a utilizzare ServerManager qual è la migliore alternativa?

risposta

14

È possibile utilizzare string baseURL = HttpContext.Current.Request.Url.Host.

+0

@ Joe.Net: spero che questo è stato utile –

+0

Sì, Grazie A J @ –

+0

Joe.Net: U r joe benvenuto. Felice di sapere che la mia risposta è stata utile. –

13

Per chi è interessato all'uso di Microsoft.Web.Administration.ServerManager, ecco un codice. Considera che un'applicazione IIS abbia più di un binding, risultante in più di un URL per applicazione web.

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

Si scopre che questo in realtà non è ciò a cui l'OP era interessato. Avete notato che l'OP indicava la risposta 'HttpContext.Current' come risposta accettata? –

+4

Beh, ecco perché ho presentato la risposta con "per chi fosse interessato ...". Vedi, molte persone vengono qui cercando una risposta per quanto riguarda ServerManager, quindi penso che questo potrebbe essere utile. –

+0

Non è così che funziona. Una risposta su ServerManager dovrebbe essere una risposta a una domanda su ServerManager. –