这里有很多关于这个问题的帖子,但它们似乎都不适合我们 . 我们仅从IIS获得来自dotnet 2.0应用程序的405状态代码 . 我们构建了相同的应用程序并且针对Ubuntu 16.04没有任何问题 .
流行的修复似乎是更改web.config文件并添加以下内容:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<modules>
<remove name="WebDAVModule"/>
</modules>
etc.....
但是,这会导致500内部服务器错误 .
我们还尝试过:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="WebDAV"/>
etc......
这导致相同的405状态代码 . 我们还尝试过:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<verbs allowUnlisted="false">
<add verb="GET" allowed="true" />
<add verb="POST" allowed="true" />
<add verb="DELETE" allowed="true" />
<add verb="PUT" allowed="true" />
</verbs>
</requestFiltering>
</security>
etc...
这也失败了 .
我们尝试为.net Core 1.1构建应用程序也没有任何乐趣(检查是否有.Core版本是问题) .
每次更改后,我们都会执行命令行
iisreset
确保清除任何“内存”缓存设置 . 我们也尝试每次重启服务器 .
所有这些尝试都失败了......我们仍然得到405 .
我们非常确定这是一个IIS问题,因为应用程序在Ubuntu上正常运行,但我们的 生产环境 服务器场都是Win / IIS,所以我们必须让它工作 .
我未决的解决方法是使用NO DELETE或PUT动词对我们的控制器进行编码;将所有内容更改为GET和POST .
还有谁能破解这个坚果?
提前致谢 .
1 回答
不完全确定原因,但我们删除了服务器上的IIS实例,并仅使用dotnet核心处理程序重新安装它 .
该网站现在按预期工作 .