我試圖遠程讀取IIS 7配置數據,特別是默認站點的logExtFileFlags。當我看的applicationHost.config在遠程服務器上,我看到有問題的信息:如何從「默認」網站讀取logExtFileFlags?
<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的有效方法。我很困惑這一點。任何幫助將不勝感激。
我也會對如何破譯這些標誌感興趣,一旦我可以正確地到達對象。一旦我達到這一點,這可能是顯而易見的。
感謝您的幫助。您的解決方案完美運作 –
@TomK - 在這種情況下,您應該接受解決問題的答案。 –