项目场景:
部署在IIS下的ASP.NET Core请求出现保存(PUT和DELETE)
问题描述
PUT和DELETE请求服务端,返回HTTP 405
原因分析:
IIS拒绝PUT和DELETE请求是由默认注册的一个名为:“WebDAVModule”的自定义HttpModule导致的。WebDAV的全称为:“Web-based Distributed Authoring and Version”它是一个在多用户之间辅助协同编辑和管理在线文档的HTTP扩展.。该扩展使应用程序可以直接将文件写到Web Server上,同时支持文件的加锁和版本控制。
解决方案:
微软是推动WebDAV成为一个标准的主导力量,它自己利用自定义的HttpModule实现了IIS针对WebDAV的支持。但是这个注册(注册名为:WcbDAVModule)会拒绝HTTP方法为PUT和DELETE的请求,如果我们的站点不需要提供针对WebDAV的支持,可以通过配置将注册的HttpModule移除。
<configuration>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>
</system.webServer>
</configuration>