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