zoukankan      html  css  js  c++  java
  • .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即可。

  • 相关阅读:
    IntelliJ IDEA错误: 源值1.5已过时,将在未来所有版本中删除
    AcWing 311. 月之谜 数位dp
    AcWing 306. 杰拉尔德和巨型象棋 计数类DP
    AcWing 296. 清理班次2 线段树优化dp
    luogu P3052 [USACO12MAR]Cows in a Skyscraper G
    luogu P5664 Emiya 家今天的饭 容斥+dp
    AcWing 289. 环路运输 滑动窗口单调队列优化
    AcWing 288. 休息时间 滚动数组+分类讨论
    AcWing 287. 积蓄程度 树形dp,换根
    luogu P3842 [TJOI2007]线段 线性dp
  • 原文地址:https://www.cnblogs.com/SCscHero/p/14620089.html
Copyright © 2011-2022 走看看