• 请求部署在 IIS7.5 上的 REST 服务的 Put/Post/Delete 操作发生 HTTP Error 405.0


    背景

    请求部署在 IIS7.5 上的 REST 服务的 Put/POST/DELETE 操作发生 HTTP Error 405.0 - Method Not Allowed 错误。

    Issue

    解决

    方法一:从HttpModule中移除

    IIS拒绝PUT和DELETE请求是由于IIS为网站默认注册的一个名为WebDAVModule的自定义HttpModule导致的,如果我们的站点不需要提供针对WebDAV的支持,所以IIS7关闭WebDAV扩展服务,最为直接的方式就是利用如下配置将注册的HttpModule移除即可:

    <system.webServer> 
        <modules> 
            <remove name="WebDAVModule" /> 
        </modules> 
        <handlers> 
            <remove name="WebDAV" /> 
        </handlers> 
    </system.webServer>
    

    方法二:移除WebDAV模块

    除了以上方法还可以通过在部署Web API的网站中,移除掉WebDAV模块即可:

    移除WebDAV模块

    方法三:卸载WebDAV扩展:

    除了上面两种方法外,还可以通过卸载WebDAV扩展,从根本上彻底关闭了WebDAV扩展服务:

    卸载WebDAV扩展

    背景知识

    WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准。利用这个协议用户可以通过Web进行远程的基本文件操作,如拷贝、移动、删除等。
    在IIS 7.0中,WebDAV是作为独立扩展模块,需要单独进行下载,而IIS 7.5中将集成WebDAV,然而WebDav把Put,Post,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错误。

    参考资料

    http://www.cnblogs.com/shanyou/archive/2012/03/23/2414252.html
    http://www.webkaka.com/tutorial/iis/2017/033020/

  • 相关阅读:
    深入理解DB2缓冲池(BufferPool)
    收银台采坑总结
    webpack4的总结
    无心法师-讲解
    cache 缓存的处理
    用es6方式的写的订阅发布的模式
    Skeleton Screen -- 骨架屏--应用
    promise实现原理
    业务线移动端适配方案总结
    vdom,diff,key 算法的了解
  • 原文地址:https://www.cnblogs.com/jinzesudawei/p/7215493.html
Copyright © 2020-2023  润新知