zoukankan      html  css  js  c++  java
  • .NET Core api部署到IIS上405的问题

    今天部署到iis 服务器上,api的put请求一直报405。其他像get post都没问题。

    google了半天,找到两种解决方案,亲测都可以。但我个人认为不是最理想的解决方案。

    1.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移除即可:

    (此方法参考:http://blog.baibaota.com/84.html)

     <system.webServer>
     <modules runAllManagedModulesForAllRequests="true">
     <remove name="WebDAVModule" />
     </modules>
     </system.webServer>

    或者

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

    2.直接通过iis在模块中移除

    直接删除即可。

    总结:其实这两种本质上是一致的。都是移除WebDAVModule,但是在.NET Core下dev下是没有web.config,只有发布后才生成,这就导致每次发布都要修改。

    目前还没找到更好的解决方法,希望有知道的能告知一下,万分感谢!

  • 相关阅读:
    php 获取文件信息相关基础函数
    php常用基础数组函数
    php数组指针相关函数
    php 常用基础数学函数
    php 基本的常用字符串函数
    php 函数返回问题
    iframe 插入内容 (转)
    [OFFICE]如何查看OFFICE是否是永久激活
    [C语言]变量的声明和定义有什么区别
    [算法]快速判断一个数是否是2的幂次方
  • 原文地址:https://www.cnblogs.com/FateHuli/p/10845788.html
Copyright © 2011-2022 走看看