如何从 "Default" 站点读取 logExtFileFlags?
How can I read the logExtFileFlags from the "Default" site?
我正在尝试远程读取 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 的有效方法。我在这一点上感到难过。任何帮助将不胜感激。
一旦我能正确到达目标,我也会对如何破译这些标志感兴趣。一旦我达到这一点,它可能是显而易见的。
您必须自己实现 FindElement
方法。看看这个 iis.net page
上的 C# 代码
logExtFileFlags
属性 将是一个字符串,将以逗号分隔值,您可以使用字符串拆分或 linq 将其转换为字符串集合。
我正在尝试远程读取 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 的有效方法。我在这一点上感到难过。任何帮助将不胜感激。
一旦我能正确到达目标,我也会对如何破译这些标志感兴趣。一旦我达到这一点,它可能是显而易见的。
您必须自己实现 FindElement
方法。看看这个 iis.net page
logExtFileFlags
属性 将是一个字符串,将以逗号分隔值,您可以使用字符串拆分或 linq 将其转换为字符串集合。