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());
// ...
}