我正在构建一个“内部”用于安装目的的工具。

目的是从xml文件(例如Authentication)获取设置并将其应用到IIS。

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

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

任何答案将不胜感激。

最佳答案

您可以对配置文件使用XPath XML查询,以查找<authentication>标记并检索其模式属性值。更好的是,为此使用一些现有的脚本功能。有用于IIS的Powershell Commandlet。看一下here中讨论的Get-WebConfiguration cmdlet。它甚至具有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

关于c# - 使用C#检查IIS中是否启用了表单例份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29665992/

10-17 01:21