2012-09-05 54 views
9

我想在MVC 4應用程序中使用PUT,並且出現405錯誤。MVC 4. IIS 7.5 PUT返回405

在我的路由我的路由上的約束,允許PUT和POST,POST到端點的作品,PUT失敗,一個405

我已經按照這裏的建議ASP.NET Web API returns 404 for PUT only on some servers這裏ASP.NET MVC got 405 error on HTTP DELETE request?

我也從IIS刪除了WeDAV,但我仍然得到了405.任何人有任何其他建議?

我也對IIS 8完全相同的問題(與Visual Studio 2012),對,我已經遵循了這一建議ASP.NET Web API - PUT & DELETE Verbs Not Allowed - IIS 8和仍然沒有運氣

回答

1

正如我上面說我使用的WebAPI並且看起來WebAPI對哪些動詞映射到哪些方法是「挑剔的」。我最終不得不將HttpXXX屬性(HttpPut,Get,Delete和Post)添加到適當的方法中,以使路由按照我的預期工作。

25

我的託管服務提供商無法卸載WebDAV,因爲這會影響到每個人。

這,runAllManagedModulesForAllRequests =「true」,工作,但不建議。

許多修復包括刪除WebDAVModule模塊,但仍然無法工作。我也刪除了處理程序,最後我可以使用所有動詞POST GET PUT DELETE。

刪除模塊和處理程序中的WebDAVModule和WebDAV。

<modules> 
    <remove name="WebDAVModule" /> 
</modules> 
<handlers> 
    <remove name="WebDAV" /> 
</handlers> 
+1

我的網頁。 config已經有了runAllManagedModulesForAllRequests =「true」。上面的刪除WebDAV行添加對我來說很好。 – Jbecwar

+0

我以爲我已經這樣做了,但我只是刪除了處理程序 - 而不是模塊。謝謝! –

+0

這適用於我。 +1 –

0

把我的2美分...點擊我的網站下iis顯示'WebDAV編寫規則'作爲'IIS'下的最後一項。雙擊顯示「WebDAV功能已被禁用」。警告右側,並有一個「啓用WebDAV」的鏈接,但它仍然無法正常工作。我跟着Stanomatic的建議之上,處理程序段沒有問題,我的模塊是這樣的:

<modules runAllManagedModulesForAllRequests="true" /> 

我剛添加的撤除它和固定我的問題:

<modules runAllManagedModulesForAllRequests="true"> 
    <remove name="WebDAVModule" /> 
</modules>