Количество запросов для страницы в asp.net MVC - PullRequest
0 голосов
/ 22 января 2010

Я хочу вычислить, сколько запросов выполняется, когда я запрашиваю страницу в asp.net mvc. Сложности в логике страницы: запросы сумм выполняются в действии основного контроллера, а другие - в действиях контроллера виджетов, которые вызываются Html.ActionLink на главной странице.

Я написал базовый класс для всех контроллеров, в котором я инкапсулирую запрос, называемый функцией для увеличения контрстатических переменных запросов. При загрузке страницы все работает хорошо, все запросы подсчитываются, но когда я запрашивал вторую страницу, мой статический счетчик не сбрасывается, что мне делать?

Ответы [ 3 ]

1 голос
/ 22 января 2010

Если возможно, избегайте использования статической переменной.Переменная экземпляра на базовом контроллере работала бы так же легко, если бы все методы использовали один и тот же экземпляр контроллера.Я предполагаю, что вы не создаете экземпляры новых контроллеров для выполнения других действий.

EDIT : После обдумывания простая статическая переменная не будет работать, так как она будет использоваться всемиЗапросы.Вам нужно будет использовать какой-то словарь, снабженный уникальным идентификатором, идентифицирующим запрос.Возможно, на основе комбинации HostAddress и отметки времени, созданной при инициировании запроса.Возможно, сработает кэш приложения, поэтому он доступен везде и автоматически очищается, когда вы закончите.Это будет только сложнее, если учесть все возможные способы взаимодействия нескольких потоков.Опять же, я бы сказал, что попытка использовать переменную экземпляра может быть лучшим способом справиться с этим.

0 голосов
/ 22 января 2010

Вы используете SQL Server? Если это так, вы можете использовать SQL Server Profiler из меню Сервис, чтобы увидеть, сколько запросов выполняется для конкретной страницы.

0 голосов
/ 22 января 2010

расширить класс MvcApplication (в вашем global.asax) с помощью

 public static int QueryCount { get; set; }

затем создайте обработчик для события MvcApplication.BeginRequest или расширьте свой существующий обработчик с помощью

this.QueryCount = 0;

и в вашем BaseController Class вы можете увеличить свой счетчик с помощью

MvcApplication.QueryCount++;

НТН

...