阅文时长| 0.48分钟字数统计| 828.8字符主要内容| 1、引言背景2、声明与参考资料『.Net Core寄托于IIS的REST服务405的问题』编写人| SCscHero 编写时间| 2021/4/6 AM12:55文章类型| 系列完成度| 已完...
阅文时长 | | 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模块作为独立拓展模块,没有集成,因而没有这个问题。
【解决方案】
- 打开运行输入optionalfeatures,通过Windows功能,关闭Internet Information Services>常见HTTP功能>WebDAV发布功能。
- 注意寄托于IIS7.5以上的REST服务,默认情况下WebDAV模块会对PUT、DELETE方法进行拦截,需要手动配置下。配置方案是:在项目目录,找到web.config文件。找到system.webServer节点。添加:
<modules>
<remove name = "WebDAVModule"/>
</modules>
在handlers节点,添加:
<remove name="WebDAV"/>
二、声明与参考资料 完成度:100%
原创博文,未经许可请勿转载。
如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!如需与博主联系的,直接博客私信SCscHero即可。
本文标题为:.Net Core·寄托于IIS的REST服务405的问题
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
- Unity Shader实现模糊效果 2023-04-27
- 如何使用C# 捕获进程输出 2023-03-10
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- Unity3D实现渐变颜色效果 2023-01-16
- .NET CORE DI 依赖注入 2023-09-27
- c# 模拟线性回归的示例 2023-03-14
- 在C# 8中如何使用默认接口方法详解 2023-03-29
- Oracle中for循环的使用方法 2023-07-04
- user32.dll 函数说明小结 2022-12-26