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 是可选的并且操作与模板匹配。
我不确定为什么在对我的 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 是可选的并且操作与模板匹配。