0

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

}
4

1 回答 1

0

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

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

ASPNET 用户没有对 ASP.NET 临时文件的写入权限

于 2009-10-07T07:14:33.390 回答