注意:我花了几个小时寻找答案,但没有找到。
我有一个托管在IIS7 (集成模式)上的ASP.NET MVC (2.0)应用程序。
当向/Toons/List
-I发出GET请求时,会得到一个到/Toons/List/
的重定向(302),这是预期的。
THE PROBLEM
但是当我发送一个POST请求时,告诉/Toons/Add
(注意后面没有斜杠)服务器返回,同样,重定向(302)到/Toons/Add/
。此时,FireFox错误地将GET请求发送到该重定向URL。也就是说,用[GET] /Toons/Add/
代替[POST] /Toons/Add/
。这是不正确的,但已知的行为。因为在/Toons/Add/
上没有GET -I get resource not found (404)。
我用webhost4life托管我的应用程序,无法访问IIS7,这限制了我使用网址重写和使用模块(我正在与他们合作解决这个问题)。但即便如此,ISAPI是最好的选择吗?我对此还不是很了解,不会觉得这样做很好。
这是一个常见的问题,我很惊讶我找不到一个简单的解决方案。
有没有不需要使用.aspx / .mvc后缀和重写网址的解决方案?
在这两个中,如果必须的话,我应该选择哪一个?
有什么想法/建议吗?
编辑
我读过http://www.hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspx,正如我所说的,我正在努力寻找一个更简单的解决方案,一个“只工作”的选项。
编辑
我已经看到了在每个网址后附加斜杠(/
)的解决方案,同样,似乎不是最优雅的解决方案。
发布于 2011-08-04 23:44:01
链接时,您应该使用实际的URL/路由。如果由于宿主环境或MVC框架2.0版本的限制而无法从路由中删除斜杠,则需要在URL中包含尾部斜杠。
依赖服务器重定向每个URL将增加服务器处理时间和页面加载时间。
发布于 2011-07-24 06:15:57
您能告诉IIS返回307而不是302吗?
发布于 2011-08-04 22:31:39
您是否在控制器中设置了接受post HttpVerbs的操作方法?您还可以尝试在控制器中为/Toons/Add设置一个路由,这样MVC就不会将它读取为/ Global.asax /Method/
https://stackoverflow.com/questions/2141883
复制相似问题