VS IISExpress REST DELETE 405 Method Not Allowed
【參考】.net IIS MVC Rest api 跨域 PUT DELETE 404 無法使用問題解決方案
?
今日在使用泛型處理常式處理檔案上傳時,使用了 HTTP 動詞的 PUT、DELETE 進行操作,卻發現當使用了 PUT、DELETE 時會發生「405 Method Not Allowed」錯誤,此錯誤的發生是由於使用了不正確的 HTTP 動詞而產生,也就是 Server 並不接受此 HTTP 動詞,為了讓 Server 能夠接受 PUT、DELETE 動詞,需要去調整 IIS 的處理常式對應,以下紀錄發生此問題的解決方法。
?
處理情形
問題情況
?
解決方法
當此問題發生時找到了 IIS Express FAQ,在 FAQ 裡提到需要去修改 IIS Express 的 config 檔案,路徑如下
C:\Users\User\Documents\IISExpress\config\applicationhost.config
?
在 config 檔案的 <handlers> ... </handlers> 標籤內的 ExtensionlessUrl-Integrated-4.0 屬性中的 verb="GET,HEAD,POST,DEBUG" 字段加入 PUT, DELETE 動詞,如下
<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />?
但依照 FAQ 的方法去增加動詞後進行測試,卻還是一樣出現 405 Method Not Allowed 錯誤。於是再仔細觀察 handlers 內後發現由於接收 HTTP PUT、DELETE 動詞的檔案為泛型處理常式,泛型處理常式的處理會交由 SimpleHandlerFactory 進行處理,所以在 handlers 內尋找 SimpleHandlerFactory 可以看到 SimpleHandlerFactory-Integrated 屬性配置,修改 SimpleHandlerFactory-Integrated 的 verb 加上 PUT、DELETE動詞,如下
<add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />?
修改後重新測試已可正常發送 PUT、DELETE 動詞,如下
?
另外如果要透過 IIS 去調整的話可以使用以下方法,進入 IIS 管理介面後點選處理常式對應
?
找到 SimpleHandlerFactory-Integrated-4.0 右鍵編輯,選擇要求限制
?
在指令動詞中加入 PUT, DELETE 即可
?
轉載于:https://www.cnblogs.com/xdot/p/9522402.html
總結
以上是生活随笔為你收集整理的VS IISExpress REST DELETE 405 Method Not Allowed的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: turret
- 下一篇: Linux文件atime ctime m