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

asp.net-mvc – ASP.NET MVC:奇怪的POST行为

发布时间:2020-12-16 07:43:12 所属栏目:asp.Net 来源:网络整理
导读:ASP.NET MVC 2应用程序 我的控制器上有两个动作(Toons): [GET]清单 [POST]添加 应用程序正在IIS7集成模式下运行,因此/ Toons / List工作正常.但是当我执行POST(内部重定向到/ Toons / List)时,它会重定向(使用302 Object Moved)返回/ Toons / Add. 如果我使
ASP.NET MVC 2应用程序

我的控制器上有两个动作(Toons):

> [GET]清单
> [POST]添加

应用程序正在IIS7集成模式下运行,因此/ Toons / List工作正常.但是当我执行POST(内部重定向到/ Toons / List)时,它会重定向(使用302 Object Moved)返回/ Toons / Add.

如果我使用.aspx hack(在IIS6 / IIS7经典模式下工作),问题就会消失.

但是如果没有.aspx – GET工作正常,但POST会将我重定向到自己,但使用GET.

我错过了什么?

我正在使用webhost4life.com托管,他们确实已经将IIS7更改为集成模式.

编辑:代码使用UltiDev Cassini服务器按预期工作.

编辑:事实证明,这是一个trash-in-URL问题.如果最后没有斜杠,IIS7会以某种方式正确路由请求.

EDET:行为说明
当我请求(POST)/ Toons / List(没有斜杠)时,IIS没有找到处理程序(我不知道IIS究竟是如何进行URL到处理程序映射)并重定向请求(使用302代码)/ Toons / List /(注意尾随斜杠).

根据HTTP规范,浏览器必须使用相同的方法(在这种情况下为POST)重定向请求,而是处理302,就好像它是303并发出对新URL的GET请求.

这是不正确的,但大多数浏览器的已知行为.

解决方案是使用.aspx-hack使IIS明确地将请求映射到ASP.NET处理程序,或者使用ASP.NET处理程序将IIS配置为处理虚拟目录中的所有内容.

问:有什么更好的方法来处理这个问题?

解决方法

您可以控制代码.
更改所有发布没有尾部斜杠的帖子的页面,以发布到正确的页面.
如果它的第三方客户,而不是返回异常,他们应该修复错误.

这是预期的行为,而不是你的工作来恢复可能发生的一切.但你应该给出好的提示(例如异常消息,而不是奇怪的错误或重定向.)

(编辑:李大同)

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

    推荐文章
      热点阅读