• .Net Core·寄托于IIS的REST服务405的问题


    阅文时长 | 0.48分钟 字数统计 | 828.8字符
    主要内容 | 1、引言&背景 2、声明与参考资料
    『.Net Core·寄托于IIS的REST服务405的问题』
    编写人 | SCscHero 编写时间 | 2021/4/6 AM12:55
    文章类型 | 系列 完成度 | 已完成
    座右铭 每一个伟大的事业,都有一个微不足道的开始。

    一、引言&背景   完成度:100%

    a) 环境说明

    操作系统:Windows10 专业版
    开发框架:.Net Core3.1(也包含其他的WebAPI框架)
    API谓词:Delete、Put
    Web服务组件:IIS10(根据已有资料,IIS7.5版本以上均会存在此问题)

    b) 应对问题&场景

    .Net Core WebAPI寄托于IIS,使用Put、Delete谓词进行访问返回"HTTP Error 405.0 - Method Not Allowed"的错误。

    c) 解决原理&方法

    【原理】
    IIS7.5中集成了名为"WebDAV"的HttpModule。WebDAV是超文本传输协议(HTTP)的一组扩展,为Internet上计算机之间的编辑和文件管理提供了标准。利用这个协议用户可以通过Web进行远程的基本文件操作,如拷贝、移动、删除等。但是这个默认注册(注册名称为WebDAVModule)会拒绝HTTP方法为PUT和DELETE的请求。所以在IIS7.5上部署的RESTful服务(WCF Data Service,WCF Rest Service,ASP.NET Web API,ASP.NET MVC),当发送Put、Delete请求就会发生HTTP Error 405.0 - Method Not Allowed错误。而IIS7.0之前WebDAV模块作为独立拓展模块,没有集成,因而没有这个问题。

    【解决方案】

    1. 打开运行输入optionalfeatures,通过Windows功能,关闭Internet Information Services>常见HTTP功能>WebDAV发布功能。
    2. 注意寄托于IIS7.5以上的REST服务,默认情况下WebDAV模块会对PUT、DELETE方法进行拦截,需要手动配置下。配置方案是:在项目目录,找到web.config文件。找到system.webServer节点。添加:
    <modules>
    <remove name = "WebDAVModule"/>
    </modules>
    

    在handlers节点,添加:

    <remove name="WebDAV"/>
    

    二、声明与参考资料   完成度:100%

    原创博文,未经许可请勿转载。

    如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!如需与博主联系的,直接博客私信SCscHero即可。

  • 相关阅读:
    MetaMask/metamask-extension-provider
    MetaMask/json-rpc-engine
    MetaMask/json-rpc-middleware-stream
    DamonOehlman/detect-browser
    kumavis/obj-multiplex
    java面试第三天
    java面试第二天
    JavaScript公共函数
    Eclipse快捷键大全
    Jdbc入门
  • 原文地址:https://www.cnblogs.com/SCscHero/p/14620089.html
Copyright © 2020-2023  润新知