ASP.NET MVC Controllers / Вызовы вызваны - PullRequest
0 голосов
/ 04 февраля 2012

Когда я вызываю контроллер, вполне возможно, что ответ просмотра вызывает другие контроллеры. Есть ли способ определить в MVC, что все представления и / или контроллеры были вызваны в одном ответе?

Спасибо.

1 Ответ

0 голосов
/ 04 февраля 2012

Я не думаю, что фреймворк предоставляет это напрямую, но вы можете подключиться к методу OnActionExecuted и регистрировать каждое вызываемое действие вместе с уникальным идентификатором запроса. Вы можете подключиться к Application_BeginRequest в global.asax.cs, чтобы сгенерировать GUID для использования в качестве уникального идентификатора для этого запроса (хранится в сеансе, но перезаписывается для каждого нового запроса). Если вы используете базовый контроллер и извлекаете из него все свои контроллеры, вы можете поместить запись в метод OnActionExecuted базовых контроллеров, чтобы он оставался СУХИМЫМ.

В качестве альтернативы вы можете посмотреть на создание собственного ActionInvoker и поместить туда логирование.

Это то место, где я бы все равно начал, хотя, возможно, есть и лучший способ.

ПРИМЕЧАНИЕ. Это будет связывать только те действия, которые вызываются на стороне сервера для запроса. Любые AJAX-запросы запускаются на стороне клиента, когда клиент получает визуализированное представление, и будут отображаться как разные запросы. Если вам нужно также включить их, ваш код генерации уникального идентификатора, вероятно, должен выполняться только на не-AJAX-запросах, в противном случае оставьте только один идентификатор в сеансе. Обычно AJAX-запросы имеют заголовок HTTP_X_Requested_With, чтобы различать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...