让IIS支持.NET Web Api PUT和DELETE请求(返回405的问题)
前言
有很长一段时间没有使用过IIS来托管应用了,今天用IIS来托管一个比较老的.NET Fx4.6的项目。发布到线上后居然一直调用不同本地却一直是正常的,关键是POST和GET请求都是正常的,只有PUT和DELETE请求是有问题的。经过一番思考忽然想起来了IIS默认情况下拒绝处理PUT和DELETE请求,要支持这两种请求的话需要做一些配置。
HTTP请求 405错误 方法不被允许 (Method Not Allowed)

为什么IIS拒绝处理PUT和Delete请求?
IIS默认情况下拒绝处理PUT和DELETE请求的原因是出于安全考虑。PUT和DELETE方法被设计为具有写入和删除数据的能力,如果未正确配置和保护,可能会导致潜在的安全漏洞。
针对这些HTTP方法,微软开发了WebDAV(Web-based Distributed Authoring and Versioning)扩展,它允许用户在Web服务器上直接编辑和管理文件。IIS默认注册了一个名为"WebDAVModule"的自定义HttpModule,用于提供WebDAV支持。
为了防止未经授权的访问和潜在的攻击,IIS默认情况下仅允许GET和POST请求,并拒绝处理PUT和DELETE请求。这样可确保服务器上的文件只能通过受限的方法进行修改和删除。
直接到IIS模块中删除WebDAVModule[不起效果]
进入IIS,选中出问题的站点或应用,可以看到其主页上有个模块功能,如下图所示:

双击模块功能,进入其详细页面,可以看到WebDAVModule项,如下图所示:

右击WebDAVModule,在右击菜单里点击删除,或者在右侧的操作里点击删除,如下图所示:

重启站点或应用,搞定!!!dos或运行下(iisreset /restart)
在应用程序的Web.config配置如下代码[有用]
作用是移除 IIS 中的 "WebDAVModule" 模块,并允许所有请求运行托管模块。这个配置适用于需要使用 PUT 和 DELETE 请求的应用程序或需要托管模块对所有请求进行处理的情况。在实际应用中,请根据需要和安全性考虑进行评估和使用。
<configuration>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="webDAVModule"/>
</modules>
<system.webServer>
</configuration>到此这篇关于让IIS支持.NET Web Api PUT和DELETE请求(返回405的问题)的文章就介绍到这了,更多相关IIS支持DELETE/PUT请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Windows server 2022创建创建林、域树、子域的步骤
本文主要介绍了Windows server 2022创建创建林、域树、子域的步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-06-06
windows服务器您试图从目录中执行CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序
您试图从目录中执行CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序2011-01-01
Windows server 2016 搭建DHCP服务的图文教程
在Windows Server 2016中启用DHCP服务的主要作用和目的,是有利于管理员在系统升级后便于管理HA,本文主要介绍了Windows server 2016搭建DHCP以及DHCP的安装方法,感兴趣的可以了解一下2023-09-09
win2008 R2 WEB环境配置之Mssql Server 2008 R2 安装图文教程及远程连接设置方法
这篇文章主要介绍了win2008 R2 WEB环境配置之Mssql Server 2008 R2 安装图文教程及远程连接设置方法,需要的朋友可以参考下2016-06-06


最新评论