我在调试一个 MVC 应用程序时遇到了问题,我希望它有一个依赖部分来发布。
是否有一种简单的方法来配置 MVC 4 应用程序以拦截所有 POST 请求,以便我可以看到它试图发布到哪个 URL 以及响应是什么?
我在调试一个 MVC 应用程序时遇到了问题,我希望它有一个依赖部分来发布。
是否有一种简单的方法来配置 MVC 4 应用程序以拦截所有 POST 请求,以便我可以看到它试图发布到哪个 URL 以及响应是什么?
通常,您需要一个全局过滤器。但是,由于在确定路线之前不会触发,因此在这种情况下它可能对您没有帮助。
您可以尝试的一件事是Application_BeginRequest
在 global.asax 中添加一个方法。它甚至不需要做任何事情。只需在其中设置一个断点,然后检查Request.AppRelativeCurrentExecutionFilePath
(或 Request 的其他成员)以查看入站路径是什么。
protected void Application_BeginRequest()
{
if (Request.HttpMethod.Equals("post", StringComparison.InvariantCultureIgnoreCase))
{ // Breakpoint here
}
}
“全局过滤器”是将行为等注入管道的首选方法。MVC 已经实现了其中的一些,您也可以扩展或实现自己的。
我去年实现的一个具体示例:客户端站点具有使密码过期的功能。伟大的; 工作正常,当用户被告知立即更改它时。但他们发现他们可以导航到网站的另一部分,直到他们下次登录时才会再次提示。所以我们添加了一个全局过滤器来检查密码是否过期(以及我们是否已经检查过在此会话中),如果是,则重定向到“更改密码”屏幕。改变之后,他们可以回到原来的地方。
但是,在找出路由或绑定问题时,这样做的缺点是:路由引擎在全局过滤器获取请求之前已经评估了请求。如果它无法识别目标操作,您的过滤器甚至不会被命中。因此,在这种情况下,像这样的低级功能Application_BeginRequest
是您唯一现实的选择。