我正在尝试编写一些C#代码来管理IIS。
我的Web应用程序有一个Microsoft.Web.Administration.Application实例。
如何使用此对象获取与“身份验证”下的IIS相同的信息?
我希望列表包含以下内容:
提前致谢, 斯蒂芬
答案 0 :(得分:-1)
Configuration configuration = Application.GetWebConfiguration();
然后使用
configuration.GetMetadata("availableSections")
...获取部分列表。身份验证部分以“system.webServer / security / authentication /”开头,因此请搜索这些部分。
然后致电
Application.GetWebConfiguration().GetSection([SECTION]).GetAttributeValue("enabled")
匿名身份验证部分称为“anonymousAuthentication”,Windows身份验证部分称为“windowsAuthentication”。
还有表单身份验证,这将在下面进一步解释。所以代码看起来像这样:
const string authenticationPrefix = "system.webServer/security/authentication/";
private Dictionary<string, string> authenticationDescriptions = new Dictionary<string,string>()
{
{"anonymousAuthentication", "Anonymous Authentication"},
{"windowsAuthentication", "Windows Authentication"},
};
Configuration configuration = application.GetWebConfiguration();
IEnumerable<string> authentications = ((String)configuration.GetMetadata("availableSections")).Split(',').Where(
authentication => authentication.StartsWith(authenticationPrefix));
foreach (string authentication in authentications)
{
string authName = authentication.Substring(authenticationPrefix.Length);
string authDesc;
authenticationDescriptions.TryGetValue(authName, out authDesc);
if(String.IsNullOrEmpty(authDesc))
continue;
authenticationCheckedListBox.Items.Add(authDesc, (bool)configuration.GetSection(authentication).GetAttributeValue("enabled"));
}
以下是表单身份验证的代码
enum FormsAuthentication { Off = 1, On = 3 };
ConfigurationSection authenticationSection = configuration.GetSection("system.web/authentication");
authenticationCheckedListBox.Items.Add("Forms Authentication", (FormsAuthentication)authenticationSection.GetAttributeValue("mode") == FormsAuthentication.On);