【问题标题】:405 StatusCode from PUT or DELETE on ASP.Net Core 2.0 in IIS405 StatusCode 来自 IIS 中 ASP.Net Core 2.0 上的 PUT 或 DELETE
【发布时间】: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


【解决方案1】:

不完全确定原因,但我们删除了服务器上的 IIS 实例并仅使用 dotnet 核心处理程序重新安装它。

该网站现在按预期运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-09
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多