【发布时间】:2018-05-11 17:42:37
【问题描述】:
这里有很多关于这个问题的帖子,但似乎没有一个对我们有用。我们仅从 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。
还有谁能破解这个难题?
提前致谢。
【问题讨论】:
-
您应该检查为什么尝试从 web.config 中删除
WebDAVModule会引发错误。 -
我们在任何日志中都没有看到任何表明我们获得 500 的原因,因此我们没有进一步追查该线程。
标签: .net iis asp.net-core