Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 使用ASP.NET MVC,是否有一种方法可以捕获所有POST请求,而不考虑主机的URL?_Asp.net Mvc_Http Post - Fatal编程技术网

Asp.net mvc 使用ASP.NET MVC,是否有一种方法可以捕获所有POST请求,而不考虑主机的URL?

Asp.net mvc 使用ASP.NET MVC,是否有一种方法可以捕获所有POST请求,而不考虑主机的URL?,asp.net-mvc,http-post,Asp.net Mvc,Http Post,我在调试一个MVC应用程序时遇到问题,我希望有一个依赖的部分发布到该应用程序 有没有一种简单的方法可以配置MVC 4应用程序来拦截所有POST请求,这样我就可以看到它试图发布到的URL以及响应是什么?通常,全局过滤器就是您想要的。但是,由于在确定路线之前不会触发,因此在这种情况下可能对您没有帮助 您可以尝试在global.asax中添加一个应用程序\u BeginRequest方法。它甚至不需要做任何事情。只需在其中设置一个断点,然后检查Request.AppRelativeCurrentExe

我在调试一个MVC应用程序时遇到问题,我希望有一个依赖的部分发布到该应用程序


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

通常,全局过滤器就是您想要的。但是,由于在确定路线之前不会触发,因此在这种情况下可能对您没有帮助

您可以尝试在global.asax中添加一个
应用程序\u BeginRequest
方法。它甚至不需要做任何事情。只需在其中设置一个断点,然后检查
Request.AppRelativeCurrentExecutionFilePath
(或请求的其他成员)以查看入站路径是什么

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

        }
    }

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

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


不过,在解决路由或绑定问题时,这有一个缺点:路由引擎在您的全局筛选器能够获得请求之前已经评估了请求。如果它无法识别目标动作,你的过滤器甚至不会被击中。因此,在这种情况下,像
Application\u BeginRequest
这样的较低级别功能是您唯一现实的选择。

是否要扩展全局过滤器,以及为什么它不作为帖子的“后半部分”应用?@Firoso添加了一些关于全局过滤器的详细信息。