2011-01-21 45 views
15

我想知道如何在运行时使用ASP.NET获取当前站点(主机名,端口,IP地址)的IIS绑定设置。 .NET是否提供了获取这些信息的方法?在运行时获取IIS绑定

编辑:我需要一种方法来将http和https端口配置为在从http切换到https时重定向到正确的端口,并且如果使用其他端口然后使用80/443,则需要从https返回http。有没有办法做到这一点没有扩展特权?

问候

+0

您运行的是哪个版本的IIS? – RQDQ 2011-01-21 20:56:04

+0

那么,这必须在IIS 6,7和7.5上工作 – Jay 2011-01-21 21:27:33

回答

12

只有这样,才能做到这一点(不作为一个管理员)使用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或任何其他方式,则需要成为管理员。

3

您应该能够通过访问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); 
    } 
}