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

Joe*_*Net 6 c# iis-7

是否可以通过使用获取IIS 7的基本URL Microsoft.Web.Administration.ServerManager

通常这将是:

http://localhost
Run Code Online (Sandbox Code Playgroud)

但我需要以编程方式获得它.

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

Mun*_*ini 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());
}
Run Code Online (Sandbox Code Playgroud)

  • 那就是为什么我用"为那些感兴趣的人......"介绍了答案.你看,许多人来到这里寻找有关ServerManager的答案,所以我认为这可能会有所帮助. (4认同)
  • 谢谢你.它回答了我关于使用ServerManager的问题,这正是OP所要求的,即使它不是OP想要的. (4认同)
  • 但这是一个关于ServerManager的问题,不是吗?您询问了如何使用ServerManager获取站点的基本URL. (3认同)
  • 好的,我愿意学习.如果我看到这样一个帖子,对我来说最好的选择是什么?我想很多人会来这个帖子,因为他们用Google搜索来搜索ServerMenager,答案并不总是有帮助,因为在很多情况下使用ServerManager你不使用ASP.NET.因此,如果我认为我有一个比OP更感兴趣的人,我该怎么办呢? (3认同)
  • 非常感谢!如果我在其中看到另外一个HttpContext的答案,我准备去邮政=). (2认同)

小智 13

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

  • 仅当您有来自浏览器客户端的请求可使用时,此方法才有效。如果您需要在用户浏览站点之前知道站点所在的URL(不幸的是,就像我不幸的情况),那么您将需要使用另一种方法来建立URL。 (2认同)