Я разработал приложение WinForms, которое показывает пропускную способность одного сайта IIS с использованием LogParser. Это сработало довольно хорошо.
Я сейчас написал то же самое в 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());
// ...
}