我创建了一个Web应用程序,用于列出IIS上的所有网站及其名称,端口和物理路径。它也应该得到IIS网站的域名。应用程序安装在IIS上,除了返回域名外,所有功能都很有效。
我编写了以下代码,并为所有网站返回“localhost:8183”。 8183是应用程序的端口本身。
Request.Url.Scheme + "://" + Request.Url.Authority +
Request.ApplicationPath.TrimEnd('/') + "/";here
然后我尝试了这个,它只返回“localhost”而不是域名。
HttpContext.Current.Request.Url.Host;
我很想知道我哪里出错了。如果需要任何进一步的信息,请告诉我。
答案 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)
然后你可以修剪它。
快乐的编码。