请求的资源不支持 http 方法 'GET' 但使用 'POST'
Posted
技术标签:
【中文标题】请求的资源不支持 http 方法 \'GET\' 但使用 \'POST\'【英文标题】:The requested resource does not support http method 'GET' but using 'POST'请求的资源不支持 http 方法 'GET' 但使用 'POST' 【发布时间】:2021-12-09 13:46:52 【问题描述】:我的路线配置正确,因为我已经在其他问题中看到了它。
Web API 使用MapHttpRoute
,它使用System.Web.Http
。我用[System.Web.Http.HttpPost]
装饰了我的操作,但它似乎不起作用,它返回错误消息:
请求的资源不支持http方法'GET'
我尝试了这个解决方案[System.Web.Http.AcceptVerbs("GET", "POST")]
,正如我在同一个问题上看到的那样。 The requested resource does not support HTTP method 'GET' 并且成功了。
但是在 API 帮助页面上,我看到的是
动作的METHOD是GET
,应该是POST
。
也许我遗漏了一些不应该或应该在我正在使用的操作上实施的内容。
这是我在控制器中的代码。
[HttpPost, Route("DestroySession/userID", Name = "DestroySession"), AcceptVerbs("GET" , "POST")]
public async Task<IHttpActionResult> DestroyUserSession(string userID)
SystemResult systemResult = new SystemResult();
await Task.Run(() =>
IAbstractLogic<UserInput, SystemResult> systemProcess = new LogoutLogic();
UserInput userInput = new UserInput
UserID = userID
;
systemResult = systemProcess.doProcess(userInput);
).ConfigureAwait(false);
return Content(HttpStatusCode.OK, new
message = systemResult.ResultMessage, status = systemResult.ResultCode == 0
);
这是我的WebApiConfig
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/controller/id",
defaults: new id = RouteParameter.Optional
);
任何帮助将不胜感激。问候
【问题讨论】:
【参考方案1】:哇哦!看来我的代码工作得很好。我刚刚在 POSTMAN 中对其进行了测试,它确实有效。我只能说,如果您的请求是 POST
某事。您需要第三方应用程序来测试它。仅在浏览器上进行测试会给您带来很多问题。
【讨论】:
你是如何“在浏览器中测试它”的?您的问题没有详细说明。如果您输入的是 url host.com/api/users/destroysession/1,那么这将是一个 GET。 POST 需要通过脚本或页面上的表单来完成。您可以查看开发工具的网络选项卡以查看发出的请求。并不是说我希望 asp 会对此撒谎.. @CaiusJard,只是将参数的值放在 URL 上。 是的,它总是做一个 GET 呜呜呜……!!!!现在我懂了。谢谢你,先生。 @CaiusJard 顺便说一句,您也许应该删除,因为请求不包含任何正文数据。通常我们使用 POST 或 PATCH 进行更新,使用 DELETE 进行删除,使用 PUT 进行插入。最好尝试将 GET 保留用于不更改任何内容的只读访问。前段时间有一些事情(谷歌?)认为预取页面上的每个 GETtable 内容以加速浏览“以防万一该内容被点击”是一个好主意,这对所有那些 GET 修改的应用程序造成了问题数据..以上是关于请求的资源不支持 http 方法 'GET' 但使用 'POST'的主要内容,如果未能解决你的问题,请参考以下文章
WebApi Post 方法总是返回“请求的资源不支持 http 方法 'GET'。”状态:405 方法不允许
ASP.NET Web API - 请求的资源不支持 http 方法“GET”
请求的资源不支持 http 方法“GET”。错误代码 405
请求的资源不支持 Visual Studio 2010 中的 HTTP 方法“GET”