我开发了一个WinForms应用程序,我用它来显示使用LogParser的单个IIS站点的带宽。这很有效。
我现在在ASP.net中写了完全相同的东西,但随后引发了以下异常: 找不到与“C:\ inetpub \ logs \ LogFiles \ W3SVC4 \ ex * .log”匹配的文件
由于我们所有的日志文件都以“u_ex”为前缀而不是“ex”(我猜是默认的IIS设置),因此异常会生成。奇怪的是,从WinForms应用程序运行时它确实有效,而不是放在WebApp中。
有谁知道为什么会发生这种情况以及如何解决这个问题?
谢谢!
这是我正在使用的代码:
private void UpdateByDateRange(DateTime dateFrom, DateTime dateTo)
{
string siteId = Request.ServerVariables["INSTANCE_ID"];
LogQueryClassClass logger = new LogQueryClassClass();
COMIISW3CInputContextClass inputContext = new COMIISW3CInputContextClassClass();
string query = "SELECT SUM(TO_REAL(sc-bytes)) AS sentTotal, SUM(TO_REAL(cs-bytes)) AS receivedTotal FROM <" + siteId + "> WHERE TO_TIMESTAMP(date, time) >= TO_TIMESTAMP('" + dateFrom.ToString("yyyy-MM-dd HH:mm:ss") + "', 'yyyy-MM-dd HH:mm:ss') AND TO_TIMESTAMP(date, time) <= TO_TIMESTAMP('" + dateTo.ToString("yyyy-MM-dd HH:mm:ss") + "', 'yyyy-MM-dd HH:mm:ss')";
ILogRecord record = logger.Execute(query, inputContext).getRecord();
decimal trafficSent = decimal.Parse(record.getValue("sentTotal").ToString());
decimal trafficReceived = decimal.Parse(record.getValue("receivedTotal").ToString());
// ...
}
答案 0 :(得分:0)
AspNet是否具有C:\ inetpub \ logs \ LogFiles \ W3SVC4 \文件夹的权限?当文件不存在或运行时没有权限时,通常会发生此错误。作为Asp.Net应用程序,您需要确保AspNet帐户可以访问此文件夹或在另一个有权访问的帐户下运行该网站。
这篇较旧的帖子可能会有所帮助。
ASPNET user does not have write access to Temporary ASP.NET Files