如何从"默认"中读取logExtFileFlags?现场?

时间:2015-06-16 02:14:36

标签: c# asp.net logging iis-7

我试图远程读取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的有效方法。我此刻难过。任何帮助将不胜感激。

一旦我能够正确地找到对象,我也会对如何破译这些标志感兴趣。一旦我达到这一点,这可能是显而易见的。

1 个答案:

答案 0 :(得分:0)

您必须自己实施FindElement方法。查看此iis.net page

上的C#代码

logExtFileFlags属性将是一个逗号分隔值的字符串,您可以使用字符串split或linq将其转换为字符串集合。