2009-02-26 3 views
0

У нас есть модуль измерения производительности, которая опирается на HttpModule и HttpHandlers и работает так:измерения производительности сети в ASP.NET 2.0 с помощью HttpHandlers и HttpModules странность

  1. Запрос приходит на сервер для страницы.
  2. HttpModule_Begin записывает время начала в файле cookie.
  3. HttpModule_End пишет время окончания в файле cookie.
  4. На клиенте, когда закончится загрузка страницы, выпалить специальный запрос через AJAX , который обрабатывается HttpHandler_ProcessRequest
  5. В HttpHandler_ProcessRequest вычитать DateTime.Now от конца времени, написанном предыдущим HttpModule_End (который хранится в куки) и сохранить его в базе данных. Одна вещь, о которой я забыл упомянуть: все данные передаются через файл cookie, поэтому HttpHandler просто извлекает данные из файла cookie без идентификаторов сеанса и т. Д. Все участники находятся в том же часовом поясе.

Этот процесс отлично работает в большинстве случаев, но есть случаи, когда сообщается о сетевом времени, превышающем час! Это указывает на очень большой промежуток времени между написанием конечного времени и отключением запроса AJAX или большим промежутком времени между отпуском запроса AJAX и временем, которое он получает на сервере приложений. Я пытаюсь понять, что может вызвать эти проблемы в дикой природе. Почему операция не просто отключается?

+0

Все участники в том же часовом поясе? – AnthonyWJones

ответ

1

Расширение поиска неисправностей: добавьте значения в журнал IIS (HttpContext.Current.Response.AppendToLog(string)).

В журнале IIS будут показаны ваши записи, и вы сможете определить, когда эти запросы были фактически записаны. Вы можете добавить все, что захотите, и оно появится в поле запроса журнала (при условии, что вы используете формат W3C.)

Если вы испытываете задержки в запросах, как свидетельствуют данные, вы можете проверить это. Это даст вам журнал IIS в качестве сравнительного источника против записанных значений в файлах cookie.

0

Вы включаете какой-то уникальный идентификатор, который позволяет обработчику запроса AJAX выяснить, какое время окончания использовать для расчета? В противном случае, возможно, на клиенте было отображено, что запрос на AJAX на самом деле приходит до того, как в базу данных было записано окончательное время, и используется неверное время окончания.