Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

时间:2023-02-08 02:21:15

一、在使用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模块)

Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

双击打开

Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

通过检查,aspNetCore本身是支持全部谓词的,现在肯定是和这个谓词有关,但需要更详细的错误信息。

既然不错信息是跨域,我们先排除跨域因数的影响,现在看到的跨域错误信息很有可能是个假象,我们通过swagger对web API进行调试。

调试需要配置授权token,请参考博客:http://www.cnblogs.com/donaldtdz/p/7892865.html

先测试接口:/api/services/app/User/GetAll

Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

测试结果:通过 200

Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

再测试接口:/api/services/app/User/Delete

Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

测试结果:

HTTP 错误 405.0 - Method Not Allowed

无法显示您正在查找的页面,因为使用了无效方法(HTTP 谓词)。

Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

将response body 用保存用浏览器打开如下:

Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

查看详细错误信息,我们开始的推断是没有问题的,最后也尝试了很多方法,最终问题核心在于 模块WebDAVModule

三、解决方案1 (这种方式针对当前服务器所有网站,不推荐,因为可能替他网站会使用到WebDAV)

在启用或关闭Windows功能 –> Internet Information Services 关闭WebDAV发布

Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

四、解决方案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 自定义设置Http缓存处理

Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)的更多相关文章

  1. ABP PUT、DELETE请求错误405&period;0 - Method Not Allowed 因为使用了无效方法&lpar;HTTP 谓词&rpar; 引发客户端错误 No &&num;39&semi;Access-Control-Allow-Origin&&num;39&semi; header is present on the requested resource

    先请检查是否是跨域配置问题,请参考博客:http://www.cnblogs.com/donaldtdz/p/7882225.html 一.问题描述 ABP angular前端部署后,查询,新增都没问 ...

  2. &period;NetCore 网站DELETE请求错误405&period;0 - Method Not Allowed 因为使用了无效方法

    .netCore网站Delete请求405错误 解决方案 1:在启用或关闭Windows功能 –> Internet Information Services 关闭WebDAV发布(这种方式可能 ...

  3. 在input中回车后页面提交导致出现HTTP 错误 405&period;0 - Method Not Allowed

    前些时间在做一个搜索功能时发现一个比較有意思的现象,场景是这种:在一个模态窗体中是一个订单列表.页面的顶部有若干个状态筛选框和一个搜索keyword输入框,当焦点在keyword输入框时按回车,本来是 ...

  4. Asp&period;net WebApi Put模式调用,&OpenCurlyDoubleQuote;HTTP 错误 405&period;0 - Method Not Allowed”解决方法

    IIS10.0在部署了WebAPI之后,默认是不支持Put模式调用的.需要按照下面方法启用. 步骤一:在IIS管理界面要支持Put模式的IIS站点,选择 "功能视图". 步骤二:选 ...

  5. 程序中使用ajax时,type为put&comma;或者delete时在 IIS上没效果,发生HTTP Error 405&period;0 - Method Not Allowed

    其实使用put delete  是在创建webapi中基本才会使用. WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准.利用这个协 ...

  6. IIS7&period;5上的REST服务的Put&comma;Delete操作发生HTTP Error 405&period;0 - Method Not Allowed 解决方法

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

  7. 请求部署在 IIS7&period;5 上的 REST 服务的 Put&sol;Post&sol;Delete 操作发生 HTTP Error 405&period;0 - Method Not Allowed 错误之解决

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

  8. ASP&period;NET Core IIS发布

    ASP.NET Core应用发布到IIS 官网教程地址:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/publish-to-iis?vi ...

  9. &lbrack;环境搭建&rsqb;-Web Api搭建到IIS服务器后PUT请求返回HTTP Error 405&period;0 - Method Not Allowed 解决方法 转摘:http&colon;&sol;&sol;blog&period;csdn&period;net&sol;qiujuer&sol;article&sol;details&sol;23827531

    尝试使用微软的Web Api,他的确是一个很有意思的东西. 让我体会到了许多的方便,但是我发现部署到IIS服务器上去了后PUT和Delete请求将返回405. 原因是IIS的默认处理程序默认情况下只允 ...

随机推荐

  1. OC ---- 字典集合 iOS学习-----细碎知识点总结

    实例方法的创建 NSDictionary *wukong = [[NSDictionary alloc] initWithObjectsAndKeys:", @"age" ...

  2. quartz启动时间配置

    这些星号由左到右按顺序代表 : * * * * * * * 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 1 秒 是 0-59 , ...

  3. JS更随机的随机数

    一.问题背景 一个二维平面上有一群NPC,每一回合可以随机向上/下/左/右任一方向走1步,有单位碰撞体积(NPC位置不能重合) 规则就这么简单,初始情况下这群NPC是被人工均匀分布在二维平面上的,运行 ...

  4. centos7通过firewalld更改sshd端口

    1.设置selinux端口 [root@hn ~]# semanage port -l|grep ssh -bash: semanage: 未找到命令 [root@hn ~]# whereis sem ...

  5. &period;net网站开发(前端):4&period;MVC HtmlHelper

    通过前面三节,已经大概理解MVC是怎样运作的了.MVC的一个特点就是可以很方便地控制视图效果,数据交互也很灵活.先讲一下视图控制的,HtmlHelper,看到Help就知道它是不知疲惫的好人啦(有点像 ...

  6. 30天代码day2 Operators

    Operators These allow you to perform certain operations on your data. There are 3 basic types: Unary ...

  7. PHP发送POST请求

    方式一:cURL $url = "localhost/test/post/service.php"; $data = array("a"=>"网 ...

  8. python之json数据存储

    # 数据存储:json.dump()和json.load() # date:2017-07-17 import json file_name = 'D:/json_file.txt' nums = [ ...

  9. &period;NET DLL 加密工具

    最近发现了一个软件叫 DotfuscatorPro 混淆加密工具 设置方式如下 1. Settings->Global Options Disable String Encryption 设为  ...

  10. heckboxlist详细用法、checkboxlist用法、checkboxlist

    heckboxlist详细用法.checkboxlist用法.checkboxlist for (int i = 0; i < CheckBoxList1.Items.Count; i++) { ...