Я не думаю, что фреймворк предоставляет это напрямую, но вы можете подключиться к методу OnActionExecuted и регистрировать каждое вызываемое действие вместе с уникальным идентификатором запроса. Вы можете подключиться к Application_BeginRequest в global.asax.cs, чтобы сгенерировать GUID для использования в качестве уникального идентификатора для этого запроса (хранится в сеансе, но перезаписывается для каждого нового запроса). Если вы используете базовый контроллер и извлекаете из него все свои контроллеры, вы можете поместить запись в метод OnActionExecuted базовых контроллеров, чтобы он оставался СУХИМЫМ.
В качестве альтернативы вы можете посмотреть на создание собственного ActionInvoker и поместить туда логирование.
Это то место, где я бы все равно начал, хотя, возможно, есть и лучший способ.
ПРИМЕЧАНИЕ. Это будет связывать только те действия, которые вызываются на стороне сервера для запроса. Любые AJAX-запросы запускаются на стороне клиента, когда клиент получает визуализированное представление, и будут отображаться как разные запросы. Если вам нужно также включить их, ваш код генерации уникального идентификатора, вероятно, должен выполняться только на не-AJAX-запросах, в противном случае оставьте только один идентификатор в сеансе. Обычно AJAX-запросы имеют заголовок HTTP_X_Requested_With
, чтобы различать их.