为什么我的路由启用的HttpGet方法被视为不支持GET
本文关键字:不支持 GET 方法 HttpGet 我的路 我的 路由 启用 为什么 | 更新日期: 2023-09-27 18:29:03
我有一对GET和POSTWeb API方法,它们运行良好。我有另一对似乎是以完全相同的方式设置的,但是GET方法拒绝接受调用。所有这样做的尝试都以消息结尾,"请求的资源不支持http方法'GET'。"
然而(再次)此GET方法的设置和装饰与工作方法相同。
这是一个有效的方法(未标记的"GET"(第一个方法)和标记的"POST"都在调用时成功输入):
[RoutePrefix("api/pricecompliance")]
public class PriceComplianceController : ApiController
{
[Route("{unit}/{begindate}")]
public HttpResponseMessage Get(string unit, string begindate)
{
. . .
[Route("{unit}/{begindate}")]
[HttpPost]
public void Post(string unit, string begindate)
{
. . .
这是看起来几乎相同的一对(当然是不同的名字,还有一个参数):
[RoutePrefix("api/produceusage")]
public class ProduceUsageController : ApiController
{
[Route("{unit}/{begindate}/{enddate}")]
public HttpResponseMessage Get(string unit, string beginRange, string
endRange)
{
. . .
[Route("{unit}/{begindate}/{enddate}")]
[HttpPost]
public void Post(string unit, string begindate, string enddate)
{
. . .
如前所述,对于不工作的第二块代码,当我尝试调用"GET"时,我得到:
请求的资源不支持http方法"GET"
我确实有这样设置的属性路由:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API routes
config.MapHttpAttributeRoutes();
为什么在后一种情况下不支持GET?
当我试图通过点击带有URL的链接来调用GET时,以及当我试图用""从Postman调用GET时http://localhost:52194/api/produceusage/gramps/201312/201412",我得到了同样的"不支持获取"爵士乐。
原来我不得不更改这个:
public HttpResponseMessage Get(string unit, string beginRange, string endRange)
到此:
public HttpResponseMessage Get(string unit, string begindate, string enddate)
以便参数名称与路由中的名称完全匹配:
[Route("{unit}/{begindate}/{enddate}")]
为什么这很重要我不知道,但确实如此。