我想知道如何在運行時使用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