• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    让IIS支持.NET Web Api PUT和DELETE请求(返回405的问题)

    发布者: 晋3555 | 发布时间: 2025-8-15 05:31| 查看数: 15| 评论数: 0|帖子模式

    前言

        有很长一段时间没有使用过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支持。
    1. 为了防止未经授权的访问和潜在的攻击,IIS默认情况下仅允许GET和POST请求,并拒绝处理PUT和DELETE请求。这样可确保服务器上的文件只能通过受限的方法进行修改和删除。
    复制代码
    直接到IIS模块中删除WebDAVModule[不起效果]

    进入IIS,选中出问题的站点或应用,可以看到其主页上有个模块功能,如下图所示:

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

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

    重启站点或应用,搞定!!!dos或运行下(iisreset /restart)

    在应用程序的Web.config配置如下代码[有用]
    1. 作用是移除 IIS 中的 "WebDAVModule" 模块,并允许所有请求运行托管模块。这个配置适用于需要使用 PUT 和 DELETE 请求的应用程序或需要托管模块对所有请求进行处理的情况。在实际应用中,请根据需要和安全性考虑进行评估和使用。
    复制代码
    1. <configuration>
    2. <system.webServer>
    3.    <modules runAllManagedModulesForAllRequests="true">
    4.      <remove name="webDAVModule"/>
    5.    </modules>
    6. <system.webServer>
    7. </configuration>
    复制代码
    到此这篇关于让IIS支持.NET Web Api PUT和DELETE请求(返回405的问题)的文章就介绍到这了,更多相关IIS支持DELETE/PUT请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    浏览过的版块

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表