首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用C#在IIS中获取网站的“浏览”地址?

如何使用C#在IIS中获取网站的“浏览”地址?
EN

Stack Overflow用户
提问于 2013-11-08 16:07:23
回答 3查看 24.4K关注 0票数 10

比方说,我在IIS中有一个“站点名称”网站。我可以在我的C#代码中通过ServerManager类访问它的大多数函数。我似乎不明白的是如何获得它的“浏览”URL,就像我在下面的屏幕截图中显示的那样?

如果我在IIS管理器中转到管理网站->浏览,它将启动IE,并显示如下网址:

http://localhost:8080/app1/Default.aspx

所以我需要得到一个这样的URL。

PS。请注意,我不需要启动站点本身。

EN

回答 3

Stack Overflow用户

发布于 2016-01-12 19:01:24

试试这个:

using (Microsoft.Web.Administration.ServerManager sm = Microsoft.Web.Administration.ServerManager.OpenRemote("localhost"))
{
    int counter = 0;
    string[] ipAddress = new string[10];
    string[] sites = new string[10];
    List<Tuple<string, string>> mylist = new List<Tuple<string, string>>();

    foreach (var site in sm.Sites)
    {
        sites[counter] = site.Name;

        foreach(var bnd in site.Bindings)
            ipAddress[counter] = bnd.EndPoint != null ? 
                bnd.EndPoint.Address.ToString() : String.Empty;

        mylist.Add(Tuple.Create(sites[counter], ipAddress[counter]));
                counter++;                    
    }
}
票数 1
EN

Stack Overflow用户

发布于 2016-06-21 15:09:12

这是获取浏览url的一种方法。

ServerManager serverMgr = new ServerManager();
Site site = serverMgr.Sites["YourSiteName"];
List<string[]> urls = new List<string[]>();
foreach (Binding binding in site.Bindings)
{
    string bindingInfo = binding.BindingInformation;
    string subString = bindingInfo.Substring(2, bindingInfo.Length - 2);
    string[] adrs = subString.Split(':');
    adrs[0] = "localhost:" + adrs[0];
    urls.Add(adrs);
}
票数 0
EN

Stack Overflow用户

发布于 2016-07-24 13:06:13

JexusManager现在是开放源码,因此您可以查看它的Binding.ToUri方法实现,

https://github.com/jexuswebserver/Microsoft.Web.Administration/blob/master/Microsoft.Web.Administration/Binding.cs

        internal string ToUri()
        {
            var address = EndPoint.Address.Equals(IPAddress.Any)
                ? Parent.Parent.Parent.Parent.HostName.ExtractName()
                : EndPoint.AddressFamily == AddressFamily.InterNetwork
                    ? EndPoint.Address.ToString()
                    : string.Format("[{0}]", EndPoint.Address);
            return IsDefaultPort
                ? string.Format("{0}://{1}", Protocol, address)
                : string.Format("{0}://{1}:{2}", Protocol, address, EndPoint.Port);
        }

因为微软的MWA不公开HostName部件,所以您必须用等效的东西替换它(因为您是初始化ServerManager的人,所以您应该知道主机名是什么)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19854257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档