.net framework

在Web.config文件中添加如下配置:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="WebDAVModule"/>
    modules>
    ......
system.webServer>

参考资料

https://stackoverflow.com/questions/15619075/webapi-delete-not-working-405-method-not-allowed

.net core

<system.webServer>
    <modules runAllManagedModulesForAllRequests="false">
        <remove name="WebDAVModule"/>
    modules>
    ......
system.webServer>

被这个false和true坑苦了,在这里祭奠一下
大概情状是,.net core的项目,如果runAllManagedModulesForAllRequests="true",在不同的电脑上会出现几种不同的情况:
1.运行正常,delete方法成功执行
2.运行不正常,VS报错,em.....内容忘掉了
3.运行不正常,VS不报错,但是生成被中断,输出不报错,输出显示

程序“[3780] dotnet.exe”已退出,返回值为 0 (0x0)。
程序“[3780] dotnet.exe: 程序跟踪”已退出,返回值为 0 (0x0)。
程序“[13356] chrome.exe: WebKit”已退出,返回值为 -1 (0xffffffff)。

一脸懵逼地把.net core,IIS,VS,项目的环境检查了一遍,哈哈哈哈哈哈哈哈 = . =

参考资料

http://hovercraft.ie/asp-net-core-web-api-put-delete-methods-not-allowed-405-error/