使用 C# 检查 IIS 中是否启用了表单身份验证

Check with C# if Forms Authentication is Enabled in IIS

我正在构建一个用于 "in-house" 安装的工具。

它的目的是从 xml 文件(例如身份验证)获取设置并将其应用到 IIS。

有没有办法检查身份验证当前是否设置为表单?

无法找到实现它的方法,只有许多示例可以在配置文件中设置相应的 XML 节点以启用所需类型的身份验证。

任何答案将不胜感激。

您可以对配置文件使用 XPath XML 查询来查找 <authentication> 标记并检索其模式属性值。更好的是,为此使用一些现有的脚本功能。 IIS 有 Powershell commandlet。查看 Get-WebConfiguration cmdlet,如 here 所述。它甚至具有 XPath 功能。

如果您想滚动自己的 XPath 查询,它看起来像

XmlDocument doc = new XmlDocument();
doc.load("PATH TO A CONFIG FILE HERE");
XmlNode authenticationNode = doc.SelectSingleNode("//system.web/authentication");
//Value of attribute is at
var authenticationMode = authenticationNode.Attributes["mode"].Value;

然而,这种方法不处理 IIS 将来自较高级别目录的配置文件与较低级别目录的配置文件混合的事实——这只是读取特定文件。因此,您必须添加一些逻辑才能查看在给定文件夹级别真正有效的身份验证。

更好的方法可能是在 Web 应用程序的 AppDomain 上进行反射,以这种方式读取配置,然后检查值。

或者你试试this from MSDN documentation