[英]How to remove WebDav from IIS, in .NET 5.0?
我们有一个 Web API Web 服务站点,内置于 .NET 4.5.2,我们正在尝试迁移到 Z3203CB0EF9EDB9087.
我们遇到了一个似乎很常见的问题——当我们将站点部署到我们的登台环境时,PUT 和 DELETE 方法都不起作用。 当我们使用生成的 Swagger UI 测试它们时,我们得到 500 个错误。
注意 - 我们没有通过 VS2019 调试器在 IIS Express 中看到这些错误。
我们浏览web,当然是找到答案了:
如何在运行 REST PUT 或 DELETE 请求时修复 500 服务器错误?
所以我们创建了一个 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>
这会导致不同的问题。
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?
这类问题的出现似乎有很多原因,我不能假装找到了所有这些问题的答案。
在这种特殊情况下,问题在于 VS 在 web.config 中插入了错误的元素。
添加 <handlers/> 和 <modules/> 元素以删除 WebDAV 导致 VS 插入 <aspNetCore/> 元素:
<aspNetCore stdoutLogEnabled="false" hostingModel="InProcess" />
并且插入的元素缺少必需的 processPath= 属性。
<aspNetCore processPath="dotnet" stdoutLogEnabled="false" hostingModel="InProcess" />
最好关闭 WebDAV Publishing。 为此:打开“打开或关闭 Windows 功能”。 现在在 Internet Information Services\World Wide Web Services\Common HTTP Features\WebDAV Publishing 中。 取消选中它并单击确定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.