Get the base url of my web application

Is it possible to get the base url of IIS 7 using Microsoft.Web.Administration.ServerManager?

Usually it will be:

http://localhost

but I need to do this programmatically.

If I can’t use ServerManager, what is the best alternative?

+5
source share
2 answers

You can use string baseURL = HttpContext.Current.Request.Url.Host.

+13
source

For those interested in using Microsoft.Web.Administration.ServerManager, here is some code. Note that an IIS application can have more than one binding, resulting in more than one URL per web application.

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());
}
+13
source

All Articles