ASP。 NET Web Api 2 问题 - 请求的资源不支持 HTTP 方法 'GET'

ASP. NET Web Api 2 issue - The requested resource does not support HTTP method 'GET'

我不确定为什么在对我的 api(使用 PostMan)的以下 GET 调用中收到“404 未找到”

http://localhost:53840/api/v1/MessageLog/SomeStuff/3

Controller中的方法如下

    [System.Web.Http.HttpGet]
    public string SomeStuff(int s)
    {            
        return "Received input !";            
    }  

WebApiConfig class 中的 Register 方法只有如下路由:

         config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/v1/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        ); 

但是当我将代码更改为

    [System.Web.Http.HttpGet]
    public string SomeStuff()
    {            
        return "Received input !";            
    }  

调用 http://localhost:53840/api/v1/LogMessage/SomeStuff 有效,POSTMAN 在响应正文中显示 "Recieved input !" 字符串。

是否有特定的调用约定来传递 int/string 等(我尝试使用 [FromUri] 但没有成功)?我在受控中有另一个 POST 方法,它接受一个 JObject 并且似乎工作得很好。

应该是这样的:

[System.Web.Http.HttpGet]
public string SomeStuff(int id)
{            
    return "Received input !";            
}

Web API 按名称匹配参数。在您的路由模板中,它被定义为 {id} 因此操作参数名称必须与之匹配。

第二个有效的原因是因为 id 是可选的并且操作与模板匹配。