2020-07-31 10:43:58 版本 : 项目部署在IIS上访问接口报405:Method not Allowed
作者: 陈一奇 于 2020年07月31日 发布在分类 / 人防组 / 人防后端 下,并于 2020年07月31日 编辑
 历史版本

修改日期 修改人 备注
2020-07-31 10:44:57[当前版本] 陈一奇 其他原因...
2020-07-31 10:43:58 陈一奇 创建版本

在虚拟机的IIS上部署项目的时候访问接口报405错误,接口请求方式为(PUT),试了下所有PUT请求的都无法访问,由此可知IIS应该是为允许当前请求方式,(Delete同理)

解决方案

1.首先查看aspNetCore在IIS中是否限制了请求方式,经过查看并未发现不被允许的请求方式。处理程序映射=>aspNetCore

2.修改发布后的文件web.config

粘贴图片

新增这段代码:

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

或者

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

查了一下解释是: 通过了解 IIS拒绝PUT和DELETE请求是由默认注册的一个名为WebDAVModule的自定义HttpModule导致的。WebDAV的全称为Web-based Distributed Authoring and Versioning,它是一个在多用户之间辅助协同编辑和管理在线文档的HTTP扩展。该扩展使应用程序可以直接将文件写到Web Server上,同时支持文件的加锁和版本控制。微软是推动WebDAV成为一个标准的主导力量,它自己利用自定义的HttpModule实现了IIS针对WebDAV的支持。但是这个默认注册(注册名称为WebDAVModule)会拒绝HTTP方法为PUT和DELETE的请求,如果我们的站点不需要提供针对WebDAV的支持,解决这个问题最为直接的方式就是利用如下配置将注册的HttpModule移除即可

3.关闭WEBDAV功能

.NET Core下dev下是没有web.config,只有发布后才生成,这就导致每次发布都要修改。 这样非常不方便。如果没有使用到WebDAV ,可以直接移除这个模块。卸载程序=》启用或关闭Windows功能=>Internet Information Service=>万维网服务=>常见HTTP功能=>WEBDAV发布。


 附件

附件类型

PNGPNG

历史版本-目录  [回到顶端]
    知识分享平台 -V 4.8.7 -wcp