如何删除 ASP.NET 中的 WebDav Core Web API。NET8型

How to remove WebDav in ASP.NET Core Web API in .NET8

提问人:Toto 提问时间:11/11/2023 更新时间:11/21/2023 访问量:48

问:

我有一个带有 EF 数据库的 ASP.NET Core API,并且我提供了一个删除 REST 终结点。在 Swagger 界面中测试它时,它运行良好,但是当我使用 Http 请求从另一个应用程序尝试时,我得到一个 MethodNotAllowed Http 状态。

现在我发现,为了解决这个问题,您必须将 web.config 文件添加到您的项目文件夹并包含以下标记(如何在启动.cs ASP.NET Core 中删除 WebDav):

<modules runAllManagedModulesForAllRequests="false">
    <remove name="WebDAVModule" />
</modules>

不幸的是,这不适用于我的 API。也许在 .NET 8 中还有其他事情要做吗?

我的 web.config 文件位于项目的根目录下,如下所示:

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

非常感谢您的任何意见

C# asp.net ASP.NET-核心 ASP.NET-Web-API

评论

1赞 David Tansey 11/12/2023
我很确定您还需要显式允许 DELETE 动词。有关更多信息,请查看这篇文章中的一些答案:stackoverflow.com/questions/12440277/...
0赞 Qiang Fu 11/21/2023
这个问题有什么进展吗?

答:

1赞 Toto 11/21/2023 #1

对于任何也遇到此问题的人,您需要修改的文件是:

{project_root}.vs{project_name}\config\applicationhost.config

然后你需要修改这个标签:

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />

将“PUT,DELETE”添加到谓词属性中。

我还在文件夹的根目录下添加了一个 web.config 文件,并添加了以下标签作为 system.webServer 的子级,但老实说,在挣扎了几个小时后,我忘记了这一点,并且不太记得是否有必要进行这两项更改,但以防万一:

<handlers>
      <remove name="aspNetCore" />
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>