我试图远程读取IIS 7配置数据,特别是默认站点的logExtFileFlags。当我查看远程服务器上的applicationHost.config时,我看到了有问题的信息:
<system.applicationHost>
<sites>
<site name="Default" id="1" serverAutoStart="true">
<logFile logExtFileFlags="Date, Time, ClientIP, UserName, SeverIP, Method, UriStem, URIQuery, HttpStatus, TimeTaken, ServerPort, UserAgent, HttpSubStatus" enabled="true" />
</site>
</sites>
</system.applicationHost>
我正在尝试使用ServerManager远程读取信息。我已经在我读过的其他参数上取得了成功,但它们位于applicationHost.config文件的system.webServer部分。我的代码设置如下:
ServerManager manager = ServerManager.GetApplicationHostConfiguration();
var allSites = manager.Sites
foreach (Site currentSite in allSites)
{
siteName = currentSite.Name;
// I only have the "Default" site on the server in question but other servers may have more than one.
ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites",siteName);
}
最后一行不起作用。实际上,它没有编译。它只是为了让你了解我想要做的事情。我也意识到会有额外的行来解析logFile标签。经过进一步研究,我发现了以下内容:
ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
ConfigurationElementCollection sitesCollection = sitesSection.GetCollection();
ConfigurationElement siteElement = FindElement(sitesCollection, "site", "name", @"Default");
这似乎就像我想做的那样。当我输入时,FindElement不是ConfigurationElement的有效方法。我此刻难过。任何帮助将不胜感激。
一旦我能够正确地找到对象,我也会对如何破译这些标志感兴趣。一旦我达到这一点,这可能是显而易见的。
答案 0 :(得分:0)
您必须自己实施FindElement
方法。查看此iis.net page
logExtFileFlags
属性将是一个逗号分隔值的字符串,您可以使用字符串split或linq将其转换为字符串集合。