IIS 允许HttpDelete访问

最近在工作中遇到一个问题,记录一下。

问题是这样的:

一个WebAPI项目(.net core 2.1),利用Swagger UI方便测试。API中涉及到一些基本操作,如Student的CRUD,分别对应了HttpGet, HttpPost, HttpPut, HttpDelete四种HttpMethod。]

在开发环境中使用VS自带的IIS来host程序,四个方法全部通过了测试。打包发布在同一台机器上的IIS(Version 10.0.17134.1),交付给前端小伙伴进行测试。前面的Get方法可以正常访问,直到Delete方法,返回结果为405。百度得知405状态码为 用来访问本页面的 HTTP 谓词不被允许(方法不被允许)。

在IIS的 处理程序映射 下有这样一个东东WebDAVModule。双击打开,点击下面的 请求限制可以发现这里可以配置IIS允许通过的谓词。将其更改为允许全部谓词,测试仍不通过。

解决方式为:

web.config中添加

<modules runAllManagedModulesForAllRequests="true">

  <remove name="WebDAVModule"/>

</modules>

成功。

相关内容:

IIS下的 处理程序映射 的作用描述是:使用此功能处理特定请求类型的响应资源,如DLL和托管代码。由此可知WebDAVModule也是处理相关内容的,但是具体是做什么的呢?

在网上只找到了IIS7下的WebDAV作用的描述,详细内容在这里。(如果有更及时的文档麻烦留言回复一下,感激不尽)

简单的说

WebDAV是Web分布式创作和版本控制的简称,它是HTTP协议的开放标准扩展,可通过Internet进行文件管理。除了通常的类文件系统操作(复制,移动,删除等)之外,WebDAV还添加了灵活的属性机制(基于名称/值对)和资源锁定。WebDAV是Microsoft Web发布故事中的关键组件,由WebDAV重定向器,Web文件夹,SMS / SCCM和许多其他组件使用。