如標題,
後端使用.NET Core MVC做Web API,
前端使用Vue js做SPA,
[HttpPut][HttpDelete][HttpPatch]該掛的屬性都有掛,
使用VS2019的IIS模擬器不會有這個問題,
但發佈到IIS上使用AXIOS PUT
、DELETE
、PATCH
都會回傳405,
已經試過下列網路上的方法皆無效。
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
參考https://blog.johnwu.cc/article/iis-http-405-error.html已經卡關幾個小時了,請問是否有大大遇過類似問題,並成功解決的? 或是知道如何解決的?
===========================已解決===========================
之前由於不明原因,應用程式集區-整合式會出現伺服器應用程式無法使用
,於是無知的我自動改成傳統式,結果問題就出在這裡。
重灌IIS後已一並解決。
我的web.config 裡面有一段,請參考看看
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
</handlers>
</system.webServer>
感謝回覆,這個已經試過無效了。
換個方向,改其他測試工具試試
Postman - 測試 API 神器 > https://ithelp.ithome.com.tw/articles/10201503
Postman也是得到附圖的結果。
使用DELETE,亂打路徑也是一樣的結果,估計是被IIS擋住了。
我也發生同樣的問題,我記錄一下我的解決方法,看可不可以幫助大家~謝謝
後端使用.NET Core MVC做Web API,
前端使用js,
發生"405 (method not allowed)"錯誤
原因:
WebDAV的全稱為Web-based Distributed Authoring and Versioning,它是一個在多用戶之間輔助協同編輯和管理線上文件的HTTP擴展。 此擴充功能可讓應用程式直接將檔案寫入Web Server上,同時支援檔案的加鎖和版本控制。
微軟是推動WebDAV成為一個標準的主導力量,它自己利用自訂的HttpModule實現了IIS針對WebDAV的支援。 但是這個預設註冊(註冊名稱為WebDAVModule)會拒絕HTTP方法為PUT和DELETE的請求
(參考:https://www.mlplus.net/2019/06/12/netcoreapiiis405/)
解決方法:
停用 WebDAV 發行
選取代管 IIS 的伺服器。
選取「模組」。
選取「WebDAVModule」(若有的話),然後按一下「移除」。
若要確認,請按一下「是」。
(參考:https://help.salesforce.com/s/articleView?id=sf.cg_modeler_ibe_disable_webdav_publishing.htm&type=5)