如何在 .NET 5.0 中从 IIS 中删除 WebDav?

How to remove WebDav from IIS, in .NET 5.0?

我们有一个在 .NET 4.5.2 中构建的 Web API 网络服务站点,我们正在尝试将其迁移到 .NET 5.0。

我们 运行 遇到了一个似乎很常见的问题 - 当我们将站点部署到暂存环境时,none PUT 和 DELETE 方法起作用。当我们使用生成的 Swagger UI 测试它们时,我们得到 500 个错误。

注意 - 我们没有在 IIS Express 中通过 VS2019 调试器看到这些错误 运行ning。

我们浏览网页,当然,找到答案:

How do you fix a 500 Server Error while running REST PUT or DELETE requests?

所以我们创建一个web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <remove name="WebDAV" />
    </handlers>
    <modules>
      <remove name="WebDAVModule" />
    </modules>
  </system.webServer>
</configuration>

这会导致不同的问题。

  1. 当我们尝试通过 VS2019 调试器 运行 IIS Express 中的站点时,出现 HTTP 500 错误,并且
  2. 运行站点修改web.config.

web.config 现在看起来像:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <remove name="WebDAV" />
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
    <modules>
      <remove name="WebDAVModule" />
    </modules>
    <aspNetCore stdoutLogEnabled="false" hostingModel="InProcess" />
  </system.webServer>
</configuration>

注意添加aspNetCore。

所以,事情是这样的。

那么,我们该怎么办?

在 IIS 中部署时以及调试时在 IIS Express 中 运行 时,我们如何使它工作?

我们如何处理 web.config 在调试期间被修改 运行?

最好关闭 WebDAV 发布。 要做到这一点 : 打开“打开或关闭 Windows 功能”。现在在 Internet Information Services\World Wide Web Services\Common HTTP Features\WebDAV Publishing 里面。取消选中它并单击确定。

出现这些问题的原因似乎有很多,我不能假装找到了所有问题的答案。

在这种特殊情况下,问题是 VS 将错误元素插入 web.config。

添加 元素以删除 WebDAV 导致 VS 插入 元素:

<aspNetCore stdoutLogEnabled="false" hostingModel="InProcess" />

并且插入的元素缺少所需的 processPath= 属性。

<aspNetCore processPath="dotnet" stdoutLogEnabled="false" hostingModel="InProcess" />