Delete,Put请求时405

在使用ASP.NET WebAPI或ASP.NET Core WebAPI时,遇到线上环境Delete和Put请求返回405错误。问题源于IIS可能不支持这些请求谓词。通过分析发现,WebDAVModule模块导致了问题。解决方案包括关闭服务器上的WebDAV发布或修改特定网站的Web.config以移除WebDAVModule。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、在使用Asp.net WebAPI 或Asp.Net Core WebAPI 时 ,如果使用了Delete,Put请求谓词,本地生产环境正常,线上发布环境报错。

服务器返回405,请求谓词无效。

二、问题分析诊断

首先检查跨域配置是没有问题的,查询数据和新增数据的请求也是没有问题的,只出现在修改和删除数据。通过了解ABP Web API请求头设置,查询是GET请求,新增是POST请求,而修改是PUT请求,删除是DELETE请求,IIS服务通常都是支持get和post请求的,由此分析推断很有可能是IIS不支持put和delete谓词请求。

通过百度了一遍对IIS进行新添加谓词put和delete。 点击部署应用 -> 出来程序映射 –> aspNetCore(由于我部署是.Net Core 程序,所以选择AspNetCoreModule模块)

 

双击打开

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

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

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

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

 

四、解决方案2 (针对当前网站,去除WebDav 模块)

修改,当前Asp.Net Core 发布后的WebConfig

去除WebDAVModule

 

<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>
  </system.webServer>
</configuration>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值