我已经开发了一个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());
// ...
}发布于 2009-10-07 07:14:33
AspNet是否具有访问C:\inetpub\logs\LogFiles\W3SVC4\文件夹的权限?当文件不存在或运行库没有权限时,通常会发生此错误。作为Asp.Net应用程序,您需要确保AspNet帐户有权访问此文件夹,或者使用其他有权访问的帐户运行网站。
这篇老文章可能会有所帮助。
ASPNET user does not have write access to Temporary ASP.NET Files
https://stackoverflow.com/questions/1529906
复制相似问题