gpt4 book ai didi

asp.net-web-api - 请求的资源不支持 http 方法 "PUT"

转载 作者:行者123 更新时间:2023-12-04 09:19:40 25 4
gpt4 key购买 nike

我将 AttributeRouting 与我的 Web API (MVC 4) 一起使用。

为什么这样做?

    [AcceptVerbs("PUT")]
[PUT("api/v1/tokens/current")]
public MemoryToken UpdateToken([FromBody] DeviceTokenViewModel viewModel)
{...}

而这个没有?
    [PUT("api/v1/tokens/current")]
public MemoryToken UpdateToken([FromBody] DeviceTokenViewModel viewModel)
{...}

错误信息:请求的资源不支持 http 方法“PUT”。
为什么我必须明确接受 PUT 动词?

我只是很困惑,因为与 POST 类似的东西工作得很好(我不必指定接受的动词):
 [POST("api/v1/tokens")]
public MemoryToken CreateToken()
{...}

从其他各种帖子中,我认为这与我的 web.config 中的设置有关。 Web 服务器部分当前如下所示:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<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" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="AttributeRouting" path="routes.axd" verb="*" type="AttributeRouting.Web.Logging.LogRoutesHandler, AttributeRouting.Web" />
</handlers>

我尝试了一些东西,比如删除 WebDav 和其他东西。但到目前为止没有任何效果(除非在注释中明确允许 PUT 动词)。

哦,我正在使用 Visual Studios 内置开发服务器。

谢谢你们!

最佳答案

在此 link如果没有任何操作匹配,他们将 POST 方法描述为默认方法。所以这就是为什么它仍然适用于没有 HttpPost 属性的 CreateToken() 方法。

  • 您可以使用以下属性指定 HTTP 方法:AcceptVerbs、HttpDelete、HttpGet、HttpHead、HttpOptions、HttpPatch、HttpPost 或 HttpPut。
  • 否则,如果 Controller 方法的名称以“Get”、“Post”、“Put”、“Delete”、“Head”、“Options”或“Patch”开头,则按照约定,该操作支持该 HTTP 方法。
  • 如果以上都不是,则该方法支持 POST。
  • 关于asp.net-web-api - 请求的资源不支持 http 方法 "PUT",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15699950/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com