zoukankan      html  css  js  c++  java
  • 【转】项目部署在IIS上访问接口报405:Method not Allowed

    在虚拟机的IIS上部署项目的时候访问接口报405错误,接口请求方式为(PUT),试了下所有PUT请求的都无法访问,由此可知IIS应该是未允许当前请求方式,(Delete同理)

    解决方案

    1.首先查看aspNetCore在IIS中是否限制了请求方式,经过查看并未发现不被允许的请求方式。处理程序映射=>aspNetCore

    2.修改发布后的文件web.config

    粘贴图片

    新增这段代码:

    <modules runAllManagedModulesForAllRequests="true">
    <remove name="WebDAVModule" />
    </modules>

    或者

    <modules runAllManagedModulesForAllRequests="true" runManagedModulesForWebDavRequests="true" >
      <remove name="WebDAVModule" />
    </modules>

    查了一下解释是: 通过了解 IIS拒绝PUT和DELETE请求是由默认注册的一个名为WebDAVModule的自定义HttpModule导致的。WebDAV的全称为Web-based Distributed Authoring and Versioning,它是一个在多用户之间辅助协同编辑和管理在线文档的HTTP扩展。该扩展使应用程序可以直接将文件写到Web Server上,同时支持文件的加锁和版本控制。微软是推动WebDAV成为一个标准的主导力量,它自己利用自定义的HttpModule实现了IIS针对WebDAV的支持。但是这个默认注册(注册名称为WebDAVModule)会拒绝HTTP方法为PUT和DELETE的请求,如果我们的站点不需要提供针对WebDAV的支持,解决这个问题最为直接的方式就是利用如下配置将注册的HttpModule移除即可。

    3.关闭WEBDAV功能

    .NET Core下dev下是没有web.config,只有发布后才生成,这就导致每次发布都要修改。 这样非常不方便。如果没有使用到WebDAV ,可以直接移除这个模块。卸载程序=》启用或关闭Windows功能=>Internet Information Service=>万维网服务=>常见HTTP功能=>WEBDAV发布。

  • 相关阅读:
    linux下的进程
    进程间通讯
    const关键字
    关于嵌入式web服务器
    指针
    内存管理(malloc和free的用法)
    关于read和fread
    C库的制作
    C语言考试
    docker 配置阿里云镜像加速
  • 原文地址:https://www.cnblogs.com/cyqdeshenluo/p/13411105.html
Copyright © 2011-2022 走看看