IIS发布-HTTP谓词限制访问
一个WebAPI项目(.net core 2.2),利用Swagger UI方便测试。API中涉及到一些基本操作,如Student的CRUD,分别对应了HttpGet, HttpPost, HttpPut, HttpDelete四种HttpMethod。]
在开发环境中使用VS自带的IIS来host程序,四个方法全部通过了测试。打包发布在同一台机器上的IIS(Version 10.0.17134.1),交付给前端小伙伴进行测试。前面的Get方法可以正常访问,直到PUT,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和许多其他组件使用。