加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用ASP.NET MVC,有没有办法捕获所有POST请求而

发布时间:2020-12-16 06:26:24 所属栏目:asp.Net 来源:网络整理
导读:我在调试MVC应用程序时遇到了麻烦,我期待它依赖于POST. 是否有一种简单的方法来配置MVC 4应用程序来拦截所有POST请求,以便我可以看到它尝试发布到哪个URL以及响应是什么? 解决方法 通常,全局过滤器将是您想要的.但是,由于在路线确定之后才会触发,因此在这种
我在调试MVC应用程序时遇到了麻烦,我期待它依赖于POST.

是否有一种简单的方法来配置MVC 4应用程序来拦截所有POST请求,以便我可以看到它尝试发布到哪个URL以及响应是什么?

解决方法

通常,全局过滤器将是您想要的.但是,由于在路线确定之后才会触发,因此在这种情况下可能无法帮助您.

您可以尝试的一件事是在global.asax中添加Application_BeginRequest方法.它甚至不需要做任何事情.只需在其中设置断点,并检查Request.AppRelativeCurrentExecutionFilePath(或Request的其他成员)以查看入站路径是什么.

protected void Application_BeginRequest()
    {
        if (Request.HttpMethod.Equals("post",StringComparison.InvariantCultureIgnoreCase))
        { // Breakpoint here

        }
    }

“global filter”是将行为等注入管道的优选方法. MVC已经实现了其中的一些,您也可以扩展或实现自己的.

我去年实现的一个具体示例:客户端站点具有使密码过期的功能.大;当用户在被告知时立即更改它时,工作正常.但是他们发现他们可以直接导航到网站的另一部分,直到他们下次登录才再次提示.所以我们添加了一个全局过滤器,检查密码是否过期(以及我们是否已经检查过在此会话中),如果是,则重定向到“更改密码”屏幕.更改后,他们可以返回到以前的任何地方.

但是,这样做的缺点是找出路由或绑定问题:路由引擎已经在全局过滤器获取之前评估了请求.如果无法识别目标操作,则甚至不会命中您的过滤器.因此,在这种情况下,像Application_BeginRequest这样的低级功能是您唯一的现实选择.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读