当我调用控制器时,视图响应可能会调用其他控制器。有没有办法确定,在MVC中,所有视图和/或控制器都在一个响应中被调用?
感谢。
答案 0 :(得分:0)
我不认为框架直接暴露了这个,但你可以挂钩OnActionExecuted方法并记录每个被调用的动作以及唯一的请求标识符。您可以在global.asax.cs中挂接Application_BeginRequest以生成GUID,以用作该请求的唯一ID(存储在Session中,但会为每个新请求覆盖)。如果您使用基本控制器并从中派生所有控制器,您可以将记录放在基本控制器OnActionExecuted方法中以使其保持干燥状态。
或者,您可以查看创建自定义ActionInvoker并将日志记录放在那里。
无论如何,这是我开始的地方,但可能有更好的方法。
注意:这只会将针对请求调用服务器端的操作绑定在一起。当客户端收到呈现的视图时,任何AJAX请求在客户端启动将显示为不同的请求。如果您还需要包含这些代码,那么您的唯一ID生成代码应该只能在非AJAX请求上运行,否则会在会话中保留现有ID。通常,AJAX请求具有HTTP_X_Requested_With
标头以区分它们。