【发布时间】:2019-07-22 15:32:27
【问题描述】:
我正在尝试设置一个 .net core 2.2 web api 来使用后置动词。无论是在我的本地计算机 (w10 iis eXPRESS 10.0) 还是 windows 服务器 (2016 R2 IIS 8.0) 上运行,除了 get 动词之外的任何内容都会返回 405。我已经阅读了有关在配置文件中禁用 WebDav、添加路由和完全删除 WebDav 功能的其他帖子。我做了所有这些都无济于事。我刚刚开始在核心中开发并发现这令人困惑,在同一台服务器上是一个在 .net 框架 4.5 上运行的非核心 Web api,它可以毫无错误地处理 GET、PUT、POST、DELETE。是的,我在更改任何配置后重新启动了服务器。以下是我所做的 web.config 更改,最后一个直接来自 MS。在我的机器和服务器上重现相同错误的基本项目在这里 https://github.com/FranciscanMedia/error405_core/tree/master 它只是您启动 VS2019 时获得的标准 Web api 项目。
<system.webServer>
<handlers accessPolicy="Read, Script">
<remove name="WebDAV" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"
path="*."
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
modules="IsapiModule"
scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv4.0,bitness64"
responseBufferLimit="0" />
</handlers>
</system.webServer>
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="false">
<remove name="WebDAVModule"/>
</modules>
</system.webServer>
<system.webServer>
<handlers accessPolicy="Read, Script">
<remove name="WebDAV" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"
path="*."
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
modules="IsapiModule"
scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv4.0,bitness64"
responseBufferLimit="0" />
</handlers>
</system.webServer>
【问题讨论】:
-
当你在本地使用 dotnet cli 运行时会发生什么?
-
@joey 发生了同样的事情,尽管命令行可能会放弃更多问题,但似乎 Microsoft.AspNetCore.Routing.EndpointMiddleware 正在将 405 吐出。 [屏幕抓取] (pasteboard.co/IpbSUEd.jpg)
-
"可能会放弃更多的问题" 不确定这意味着什么。尝试使用此处所述的最少代码在公共 github 存储库中创建问题。在那之后你一定会得到解决stackoverflow.com/help/minimal-reproducible-example
-
@joey 这只是意味着我在使用浏览器和 POSTMAN 时没有收到除 405 以外的消息,CLI 为我提供了产生错误的命名空间(如屏幕截图所示)Microsoft.AspNetCore .路由.中间件。仍然找不到任何关于它的信息。我启动了一个核心 web api 项目并在我的机器/服务器上运行它,结果相同。可以在这里找到:github.com/FranciscanMedia/error405_core/tree/master
-
你了解过这个吗?我遇到了完全相同的问题。
标签: c# .net webdav visual-studio-2019 .net-core-2.2