获取IIS网站的域名

时间:2015-03-11 07:00:51

标签: c# asp.net iis

我创建了一个Web应用程序,用于列出IIS上的所有网站及其名称,端口和物理路径。它也应该得到IIS网站的域名。应用程序安装在IIS上,除了返回域名外,所有功能都很有效。

我编写了以下代码,并为所有网站返回“localhost:8183”。 8183是应用程序的端口本身。

  Request.Url.Scheme + "://" + Request.Url.Authority +
    Request.ApplicationPath.TrimEnd('/') + "/";here

然后我尝试了这个,它只返回“localhost”而不是域名。

  HttpContext.Current.Request.Url.Host;

我很想知道我哪里出错了。如果需要任何进一步的信息,请告诉我。

3 个答案:

答案 0 :(得分:1)

Web服务器实际上并不知道其可以服务的域。它知道该请求的线程中的请求标头中的域是什么,但是您可以设置要指向任何服务器IP地址的任何域,服务器将接受它。

如果已按域设置绑定(使用服务器名称指示),则可以从Microsoft.Web.Administration(对于ServerManager.Site中的每个站点,对于每个站点)中的对象中获取该信息。如果Binding.Protocol = http或https且Binding.Host!=“”,则在site.bindings中进行绑定,然后写出Binding.Host),但这不会告诉您任何不在绑定中的域。

答案 1 :(得分:0)

如果您使用请求对象,它将仅提供有关运行代码的网站的详细信息。您需要使用目录服务连接到IIS并继续工作。

[来自已经回答的问题] - 这是一个article,解释了如何使用System.DirectoryServices命名空间中的类以及IIS 7引入的Microsoft.Web.Administration命名空间来完成此操作。

答案 2 :(得分:0)

您可以使用以下代码获取当前服务器的域名:

System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName

或者您可以使用以下代码获取当前用户的域名:

System.Security.Principal.WindowsIdentity.GetCurrent().User. (string value)

然后你可以修剪它。

快乐的编码。