我想知道如何在运行时使用ASP.NET获取当前站点(主机名,端口,IP地址)的IIS绑定设置。 .NET是否提供了获取这些信息的方法?在运行时获取IIS绑定
编辑:我需要一种方法来将http和https端口配置为在从http切换到https时重定向到正确的端口,并且如果使用其他端口然后使用80/443,则需要从https返回http。有没有办法做到这一点没有扩展特权?
问候
我想知道如何在运行时使用ASP.NET获取当前站点(主机名,端口,IP地址)的IIS绑定设置。 .NET是否提供了获取这些信息的方法?在运行时获取IIS绑定
编辑:我需要一种方法来将http和https端口配置为在从http切换到https时重定向到正确的端口,并且如果使用其他端口然后使用80/443,则需要从https返回http。有没有办法做到这一点没有扩展特权?
问候
只有这样,才能做到这一点(不作为一个管理员)使用Microsoft.Web.Administration。我刚写了一篇关于如何做一个快速的博客,请参见:
http://blogs.msdn.com/b/carlosag/archive/2011/01/21/get-iis-bindings-at-runtime-without-being-an-administrator.aspx
基本上因为IIS有一个特点,我们称之为工作进程隔离,可以读取应用程序本身的配置,而不需要的是管理员。如果您使用ADSI,Metabase或任何其他方式,则需要成为管理员。
您应该能够通过访问IIS元数据库,使用的System.DirectoryServices装配做到这一点。
例如,在这里您可以列举这些网站中包含的所有网站和属性配置。
此引用添加到您的项目:
using System.DirectoryServices
// Assuming your Server Id is 1, and you are connecting to your local IIS.
DirectoryEntry de = new DirectoryEntry(@"IIS://localhost/W3SVC/1/Root");
foreach (DirectoryEntry entry in de.Children)
{
foreach (PropertyValueCollection property in entry.Properties)
{
Console.WriteLine("Name: {0}, Value {1}",property.PropertyName, property.Value);
}
}
您运行的是哪个版本的IIS? – RQDQ 2011-01-21 20:56:04
那么,这必须在IIS 6,7和7.5上工作 – Jay 2011-01-21 21:27:33