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