【问题标题】:Getting IIS Websites' Domain names获取 IIS 网站的域名
【发布时间】:2015-03-11 07:00:50
【问题描述】:

我创建了一个 Web 应用程序来列出 IIS 上的所有网站及其名称、端口和物理路径。它还应该获取 IIS 网站的域名。该应用程序安装在 IIS 上,所有功能都运行良好,除了返回域名。

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

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

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

  HttpContext.Current.Request.Url.Host;

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

【问题讨论】:

    标签: c# asp.net iis


    【解决方案1】:

    Web 服务器实际上并不知道它可以服务于哪些域。它知道该请求的线程中的请求标头中的域是什么,但是您可以设置任何您喜欢的域来指向任何服务器的 IP 地址,并且服务器会接受它。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 感谢您抽出宝贵时间,但这篇文章与我已经完成的事情相比没有任何进展。
      【解决方案3】:

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

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

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

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

      然后你可以修剪它。

      编码愉快。

      【讨论】:

      • 谢谢,不过我已经可以获取当前服务器的域名了。我需要的是获取所有 IIS 网站的域名。
      猜你喜欢
      • 2010-12-11
      • 2014-07-30
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      相关资源
      最近更新 更多