首页 > 其他分享 >IIS上Put操作出现HTTP Error 405.0 - Method Not Allowed 解决方法

IIS上Put操作出现HTTP Error 405.0 - Method Not Allowed 解决方法

时间:2023-06-30 12:04:01浏览次数:72  
标签:Web 405.0 HTTP WebDAV IIS Service Put

WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准.利用这个协议用户可以通过Web进行远程的基本文件操作,如拷贝、移动、删除等。 在IIS 7.0中,WebDAV是作为独立扩展模块,需要单独进行下载,而IIS 7.5以及以上版本中将集成WebDAV,然而WebDav把Put,Delete禁用了。 所以在IIS 7.5上部署的RESTful服务(WCF Data Service,WCF Rest Service,ASP.NET Web API,ASP.NET MVC)后,当发送Put请求就会发生HTTP Error 405.0 – Method Not Allowed错误。

IIS上Put操作出现HTTP Error 405.0 - Method Not Allowed 解决方法_Web

 

 

1、系统本地开发环境运行正常,在部署到服务器之后出现Put请求报405 - Method Not Allowed 错误。

错误情况如下图:

IIS上Put操作出现HTTP Error 405.0 - Method Not Allowed 解决方法_IIS_02

 

2、通过分析,为WebDAV插件导致。

WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准.利用这个协议用户可以通过Web进行远程的基本文件操作,如拷贝、移动、删除等。

在IIS 7.0中,WebDAV是作为独立扩展模块,需要单独进行下载,而IIS 7.5以及以上版本中将集成WebDAV,然而WebDav把Put,Delete禁用了。

所以在IIS 7.5上部署的RESTful服务(WCF Data Service,WCF Rest Service,ASP.NET Web API,ASP.NET MVC)后,当发送Put请求就会发生HTTP Error 405.0 – Method  Not Allowed错误。

IIS上Put操作出现HTTP Error 405.0 - Method Not Allowed 解决方法_IIS_03

3、对应解决方法如下:

  在Web.config文件中system.webServer节点下增加如下针对WebDAV配置:

<modules> 
    <remove name="WebDAVModule" /> 
  </modules> 
  <handlers> 
    <remove name="WebDAV" /> 
  </handlers>

     完整的配置文件如下图:

IIS上Put操作出现HTTP Error 405.0 - Method Not Allowed 解决方法_Web_04

 

 

 代码如下:

IIS上Put操作出现HTTP Error 405.0 - Method Not Allowed 解决方法_ASP_05

IIS上Put操作出现HTTP Error 405.0 - Method Not Allowed 解决方法_Web_06

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET,PUT,DELETE" />
        <add name="Access-Control-Allow-Headers" value="x-requested-with,content-type,AuthenticationToken" />
        <add name="Access-Control-Allow-Origin" value="*" />
      </customHeaders>
    </httpProtocol>
    <modules >
      <remove name="WebDAVModule" />
    </modules>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="TRACEVerbHandler" />
      <remove name="WebDAV" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>

View Code

 4、以上问题解决后如执行结果如下图所示:

IIS上Put操作出现HTTP Error 405.0 - Method Not Allowed 解决方法_IIS_07

 

作者:古道轻风


标签:Web,405.0,HTTP,WebDAV,IIS,Service,Put
From: https://blog.51cto.com/u_15949547/6589549

相关文章

  • 生成https证书
    生成HTTPS证书1.使用loge命令的方式生成HTTPS证书参数说明:*.domain.com替换为你的域名,支持所有子域名--dns是指域名在哪个云厂商,支持的云厂商有alidns/cloudflareaws;详细参考github官方文档CLOUDFLARE_EMAIL="[email protected]"\CLOUDFLARE_API_KEY="xxx"\lego--ema......
  • 处理HTTPGET请求参数中含有数组不识别的问题处理
    如:  在Program中增加 ......
  • 关于HTTPS与HTTP的区别
    超文本传输协议(HypertextTransferProtocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣......
  • kratos http原理
    概念kratos为了使http协议的逻辑代码和grpc的逻辑代码使用同一份,选择了基于protobuf的IDL文件使用proto插件生成辅助代码的方式。protochttp插件的地址为:https://github.com/go-kratos/kratos/tree/main/cmd/protoc-gen-go-http示例syntax="proto3";packagehelloworld;......
  • https://leetcode.cn/ 第9题 判断回文数
    #回文数121是;123不是#定义一个函数判断是否是回文数defget_Hui(num):#将整数num转字符串str_num=str(num)str_num_change=str_num[::-1]num2=int(str_num_change)#判断整数num和num2是否相等if(num2==num):print("是......
  • HTTP/3,它来了!
    首先,我们先来介绍一下HTTP/2,HTTP/2通过二进制传输、多路复用、Header压缩、ServerPush等特性大大地提升了HTTP/1.x的性能,但是由于HTTP/2是基于TCP协议实现的,TCP本身特性导致其必然存在一定的瓶颈及缺陷。HTTP/2缺陷:①Head-Of-Line Blocking(队头阻塞):HTTP/2多个请求都是......
  • Python错误:requests请求https网站报错SSLError
    问题描述:用requests包请求https的网站时,经常会遇到证书问题,也就是常见的SSLerror:requests.exceptions.SSLError:HTTPSConnectionPool(host='www.xxx.com',port=443):Maxretriesexceededwithurl:xxx.html(CausedbySSLError(SSLCertVerificationError(1,'[S......
  • C# HttpClient、API访问插件、接口访问
    关于使用插件访问接口.Net版本:NETFramework4.7.2 RestSharp版本:105.2.3.0Post访问 staticstringPostAction(){//公共apiconststringurl="https://api.uomg.com/api/rand.qinghua";//添加api访问......
  • Nginx http重定向https
    Nginx配置同一个域名http与https两种方式都可访问,证书是阿里云上免费申请的 server{listen80;listen443ssl;sslon;server_name域名;indexindex.htmlindex.htmindex.phpdefault.htmldefault.htmdefault.php;ssl_certificate/usr/local/nginx/cert/21402058063066221.......
  • Nginx 配置HTTP跳转到HTTPS
    https 访问我们的测试域名 https://www.xxx.com 站点,但是当我们直接在浏览器地址栏中直接输入 www.xxx.com 的时候却发现进入的是 http 协议的网站,这与我们的初衷不一致。 由于浏览器默认访问域名使用的是80端口,而当我们使用SSL证书后,网站的端口就变成了443,所以当我们直......