获取我的Web应用程序的基本URL

时间:2013-04-10 11:51:12

标签: c# iis-7

是否可以使用Microsoft.Web.Administration.ServerManager

获取IIS 7的基本URL

通常这将是:

http://localhost

但我需要以编程方式获取它。

如果我不能使用ServerManager什么是最佳选择?

2 个答案:

答案 0 :(得分:14)

对于那些对使用Microsoft.Web.Administration.ServerManager感兴趣的人,这里有一些代码。考虑到我的IIS应用程序有多个绑定,导致每个Web应用程序有多个URL。

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 :(得分:13)

您可以使用string baseURL = HttpContext.Current.Request.Url.Host