LogApp中的LogParser失败

时间:2009-10-07 06:45:09

标签: c# asp.net logging traffic logparser

我开发了一个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()); 
// ...

}

1 个答案:

答案 0 :(得分:0)

AspNet是否具有C:\ inetpub \ logs \ LogFiles \ W3SVC4 \文件夹的权限?当文件不存在或运行时没有权限时,通常会发生此错误。作为Asp.Net应用程序,您需要确保AspNet帐户可以访问此文件夹或在另一个有权访问的帐户下运行该网站。

这篇较旧的帖子可能会有所帮助。

ASPNET user does not have write access to Temporary ASP.NET Files