是否可以使用 IIS 7 获取托管在 IIS 7 中的网站的基本 URL Microsoft.Web.Administration.ServerManager
?
在最简单的情况下,这将是:
http://localhost
但我需要以编程方式获取它。
如果我不能使用ServerManager
什么是最好的选择?
对于那些对 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());
}
您可以使用string baseURL = HttpContext.Current.Request.Url.Host
.