2020-06-19 11:30:16
net core 发布之后 put、delete 请求错误 405.0 - Method Not Allowed 的解决方法及原因分析
答案:
net core 应用在开发环境中运行正常,但在部署到 Windows Server 2019 后,PUT 和 DELETE 请求会出现 405 Method Not Allowed 错误。此问题通常与 IIS(Internet Information Services)中的 WebDAV 模块有关。以下是详细岩改的解决方法及原因分析。
解决方法:
打开 IIS 管理器:
在 Windows Server 2019 上,打开“服务器管理器”。
点击“工具”下的“IIS 管理器”。
定位到模块配置:
在 IIS 管理器中,选择左侧的网站或应用程序节点(例如,你的网站可能位于“网站”下的“默认网站”或自定义网站名称下)。
在中间的功能视图中,双击“模块”。
删除 WebDAV 模块:
在“模块”列表中,找到名为“WebDAVModule”的模块。
选中“WebDAVModule”,然后点击右侧的“删除”按钮。
确认删除操作。
重启 IIS:
在 IIS 管理器中,选择顶部的服务器节点。
在右侧的操作面板中,点击“重启”以重启 IIS 服务。
完成上述步骤后,PUT 和 DELETE 请求应该能够正常执行,不再返回 405 Method Not Allowed 错误。
原因分析:
WebDAV(Web-based Distributed Authoring and Versioning)模块是一个 HTTP 功能模块,它默认情况下会处理 PUT 和 DELETE 请求。在某些配置下,WebDAV 模块会拦截这些请求并返回 405 错误,因为它默认情况下不允许这些请求通过。
WebDAV 模块的作用:
WebDAV 模块允许用户通过 HTTP 协议对服务器上弯亮的文件进行编辑和版本控制。
它提供了对文件的锁定、解锁、上传、下载和版本管理等功能。
为什么 WebDAV 模块会影响 PUT 和 DELETE 操作:
当 WebDAV 模块启用时,它会尝试处理所有 PUT 和 DELETE 请求。
如果 WebDAV 模块的配置不允许这些请求,或者请求不符合 WebDAV 的要求,它就会返回 405 Method Not Allowed 错误。
在某些情况下,即使 WebDAV 模块没有显式配置为拦截这些请求,它也可能由于内部逻辑或配置错误而导致请求被拒绝。
为什么开发环境中没有出现问题:
开发环境中通常不会启用 WebDAV 模块,或者 WebDAV 模块的配置不会影响到 PUT 和 DELETE 请求。
部署到生产环境后,由于 IIS 的默认配置或安全策略,WebDAV 模块可能被埋枣宽启用,从而导致问题出现。
通过删除 WebDAV 模块,可以确保 PUT 和 DELETE 请求不会被该模块拦截,从而解决 405 Method Not Allowed 错误。如果需要在生产环境中使用 WebDAV 功能,建议仔细配置 WebDAV 模块,以确保它不会干扰到其他 HTTP 请求。