我正在尝试确定ASP.NET应用程序的IIS日志文件位置的位置。我试过WMI,但是找不到它。有什么建议吗?
注意:我希望能够以编程方式检索位置;在我的申请中进一步使用。 编辑:这是我的代码:这有效,但没有给我日志的实际物理目录位置。所以这基本上没用了。
ManagementPath p2=new ManagementPath("IIsLogModule.Name='logging/Microsoft IIS Log File Format'");
ManagementObject log = new ManagementObject(scope, p2, objectGet);
log.Get();
logPath.Text = log["__PATH"].ToString();
答案 0 :(得分:5)
在IIS7上您可以使用Microsoft.Web.Administration程序集,Site类有一个名为LogFile的属性,您可以获取有关站点日志文件的各种信息,例如可以获取日志文件目录使用此代码:
ServerManager manager = new ServerManager();
Site mySite = manager.Sites["SiteName"];
Response.Write("Log file directory : " + mySite.LogFile.Directory + "\\W3svc" + mySite.Id.ToString());
我不太喜欢网站目录前缀的硬编码部分,但没有找到任何其他更好的方法
答案 1 :(得分:0)
您应该能够使用ADSI(或WMI)来执行此操作 - 浏览IIS元数据库并查找网站节点的“LogFileDirectory”属性。例如,
var root = new DirectoryEntry(@"IIS://localhost/W3SVC");
var sites = root.Children;
foreach(DirectoryEntry site in sites) {
var name = site.Properties["ServerComment"][0];
var logFile = site.Properties["LogFileDirectory"][0];
}
免责声明:未经测试的代码
使用类似的想法查看this powershell example。