Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)
一、在使用Asp.net WebAPI 或Asp.Net Core WebAPI 时 ,如果使用了Delete请求谓词,本地生产环境正常,线上发布环境报错。
服务器返回405,请求谓词无效。
二、问题分析诊断
首先检查跨域配置是没有问题的,查询数据和新增数据的请求也是没有问题的,只出现在修改和删除数据。通过了解ABP Web API请求头设置,查询是GET请求,新增是POST请求,而修改是PUT请求,删除是DELETE请求,IIS服务通常都是支持get和post请求的,由此分析推断很有可能是IIS不支持put和delete谓词请求。
通过百度了一遍对IIS进行新添加谓词put和delete。 点击部署应用 -> 出来程序映射 –> aspNetCore(由于我部署是.Net Core 程序,所以选择AspNetCoreModule模块)
双击打开
通过检查,aspNetCore本身是支持全部谓词的,现在肯定是和这个谓词有关,但需要更详细的错误信息。
既然不错信息是跨域,我们先排除跨域因数的影响,现在看到的跨域错误信息很有可能是个假象,我们通过swagger对web API进行调试。
调试需要配置授权token,请参考博客:http://www.cnblogs.com/donaldtdz/p/7892865.html
先测试接口:/api/services/app/User/GetAll
测试结果:通过 200
再测试接口:/api/services/app/User/Delete
测试结果:
HTTP 错误 405.0 - Method Not Allowed
无法显示您正在查找的页面,因为使用了无效方法(HTTP 谓词)。
将response body 用保存用浏览器打开如下:
查看详细错误信息,我们开始的推断是没有问题的,最后也尝试了很多方法,最终问题核心在于 模块WebDAVModule
三、解决方案1 (这种方式针对当前服务器所有网站,不推荐,因为可能替他网站会使用到WebDAV)
在启用或关闭Windows功能 –> Internet Information Services 关闭WebDAV发布
四、解决方案2 (针对当前网站,去除WebDav 模块)
修改,当前Asp.Net Core 发布后的WebConfig
去除WebDAVModule,
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<configuration>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<handlers accessPolicy="Read, Script">
<remove name="WebDAV" />
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\QL.MiniData.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</configuration>
这样就可以了。
更多参考:
https://www.cnblogs.com/donaldtdz/p/8094300.html
https://blog.csdn.net/qiujuer/article/details/23827531
ASP.NET Core中使用Razor视图引擎渲染视图为字符串(转)
Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)的更多相关文章
- ABP PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词) 引发客户端错误 No 'Access-Control-Allow-Origin' header is present on the requested resource
先请检查是否是跨域配置问题,请参考博客:http://www.cnblogs.com/donaldtdz/p/7882225.html 一.问题描述 ABP angular前端部署后,查询,新增都没问 ...
- .NetCore 网站DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法
.netCore网站Delete请求405错误 解决方案 1:在启用或关闭Windows功能 –> Internet Information Services 关闭WebDAV发布(这种方式可能 ...
- 在input中回车后页面提交导致出现HTTP 错误 405.0 - Method Not Allowed
前些时间在做一个搜索功能时发现一个比較有意思的现象,场景是这种:在一个模态窗体中是一个订单列表.页面的顶部有若干个状态筛选框和一个搜索keyword输入框,当焦点在keyword输入框时按回车,本来是 ...
- Asp.net WebApi Put模式调用,“HTTP 错误 405.0 - Method Not Allowed”解决方法
IIS10.0在部署了WebAPI之后,默认是不支持Put模式调用的.需要按照下面方法启用. 步骤一:在IIS管理界面要支持Put模式的IIS站点,选择 "功能视图". 步骤二:选 ...
- 程序中使用ajax时,type为put,或者delete时在 IIS上没效果,发生HTTP Error 405.0 - Method Not Allowed
其实使用put delete 是在创建webapi中基本才会使用. WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准.利用这个协 ...
- IIS7.5上的REST服务的Put,Delete操作发生HTTP Error 405.0 - Method Not Allowed 解决方法
WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准.利用这个协议用户可以通过Web进行远程的基本文件操作,如拷贝.移动.删除等.在I ...
- 请求部署在 IIS7.5 上的 REST 服务的 Put/Post/Delete 操作发生 HTTP Error 405.0 - Method Not Allowed 错误之解决
背景 请求部署在 IIS7.5 上的 REST 服务的 Put/POST/DELETE 操作发生 HTTP Error 405.0 - Method Not Allowed 错误. Issue 解决 ...
- ASP.NET Core IIS发布
ASP.NET Core应用发布到IIS 官网教程地址:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/publish-to-iis?vi ...
- [环境搭建]-Web Api搭建到IIS服务器后PUT请求返回HTTP Error 405.0 - Method Not Allowed 解决方法 转摘:http://blog.csdn.net/qiujuer/article/details/23827531
尝试使用微软的Web Api,他的确是一个很有意思的东西. 让我体会到了许多的方便,但是我发现部署到IIS服务器上去了后PUT和Delete请求将返回405. 原因是IIS的默认处理程序默认情况下只允 ...
随机推荐
- JDK5的新特性之可变参数&Arrays.asList()方法
[代码] package com.hxl; import java.util.Arrays; import java.util.List; public class Test { public sta ...
- day 39 mycql 数据库之约束
egon笔记: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 UNIQUE KEY (UK) 标识该字段的值是唯一的 AUTO_INCREMENT 标识该字段的值自动增 ...
- responseHandler
resonsehandler 接受服务端传过来的数据,然后在这个函数里处理好要显示的数据在return个table显示 <!DOCTYPE html> <html lang=&quo ...
- ECMAScript 原始类型
---恢复内容开始--- ECMAScript 有 5 种原始类型(primitive type),即 Undefined.Null.Boolean.Number 和 String. 1.typeof ...
- To the Max POJ - 1050 (最大子段和)
Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous s ...
- Django之模板基础
Django之模板 目录 变量 过滤器 标签的使用 变量 变量的引用格式 使用双括号,两边空格不能省略. 语法格式: {{var_name}} Template和Context对象 context 字 ...
- PostgreSQL 在Ubuntu下如何修改postgres默认密码
Step1: 切换用户为postgres sudo su postgres Step2: 用postgres连接postgreSQL psql -U postgres Step3: 修改postgre ...
- 用单向链表实现两数倒序相加(java实现)
很久没做算法题了,准备重操旧业,于是刷了一波LeetCode,看到一个比较经典的链表算法题,分享出来. 题目 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将 ...
- Linux系统开发之路-中
4.Linux的安装(Windows环境下): 1)Windows环境需要借助虚拟机来安装Linux系统,这个推荐使用的软件是VMWare,官网能下载到的最新版本是Workstation Pro15. ...
- SpringBoot邮件发送
这篇文章介绍springboot的邮件发送. 由于很简单就没有分出server和imp之类,只是在controller简单写个方法进行测试. 首先pom文件加入spring-boot-starter- ...