ASP.NET MVC 应用ASP.NET MVC:奇怪POST行为
我有我的控制器(的Toons)在两个动作:
- [GET]列出
- [POST]添加
应用程序在IIS7集成模式下运行,所以/ Toons/List可以正常工作。但是当我执行POST(重定向到/ Toons/List内部)时,它将重定向(使用302对象移动)回到/ Toons/Add。
的问题消失,如果我使用的.aspx黑客(在IIS6/IIS7经典模式下工作)。
但是,如果没有的.aspx - 获取做工精细,但POST重定向我拉到本身,而是用GET。
我错过了什么?
我与webhost4life.com托管和他们没有改变对IIS7集成模式了。
编辑:代码按照预期使用UltiDev卡西尼服务器。
编辑:原来是尾随斜杠在-URL问题。不知何故,如果最后没有斜线,IIS7不会正确路由请求。
EDET:行为
会发生什么情况的解释是,当我请求(POST)/Toons/List
(没有斜线),IIS没有找到处理程序(我没有知识,了解IIS究竟怎样网址处理器映射),并将请求(使用302代码)重定向到/Toons/List/
(通知后面的斜线)。
浏览器,根据HTTP规范,必须重定向使用相同的方法请求(POST在这种情况下),而是它处理302,就好像它是303和问题获取新URL请求。
这是不正确的,但大多数浏览器已知的行为。
的解决方法是,使用的.aspx,破解,使其明确了IIS如何请求映射到ASP.NET处理程序,或配置IIS来处理使用ASP.NET处理程序中的虚拟目录的一切。
问:什么是更好的方式来处理呢?
什么是你的添加操作的代码? – 2010-01-26 02:05:31
return RedirectToAction(“List”,“Toons”); – 2010-01-26 02:10:11
如果您执行List操作的[GET],会发生什么情况? – 37Stars 2010-02-10 21:58:08