是否可以使用Microsoft.Web.Administration.ServerManager
?
通常这将是:
http://localhost
但我需要以编程方式获取它。
如果我不能使用ServerManager
什么是最佳选择?
答案 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
。