0

LogParser を使用して単一の IIS サイトの帯域幅を表示する WinForms アプリを開発しました。これはかなりうまくいきました。

ASP.net でまったく同じことを書きましたが、次の例外がスローされます。「C:\inetpub\logs\LogFiles\W3SVC4\ex*.log」に一致するファイルが見つかりません。

すべてのログ ファイルには「ex」ではなく「u_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アカウントがこのフォルダーにアクセスできることを確認するか、アクセスできる別のアカウントでWebサイトを実行する必要があります。

この古い投稿が役立つかもしれません。

ASPNETユーザーには、一時ASP.NETファイルへの書き込みアクセス権がありません

于 2009-10-07T07:14:33.390 に答える