我正在使用小提琴手测试我的请求..
我使用下面的reuest来调用我的web api方法..它工作正常。
http://localhost:50079/Import/Test/abc
Type :Get
web api method:
[ActionName("Test")]
public bool getconnection(string id)
{
return true;
}
如果我传递多个参数,我收到错误: HTTP / 1.1 404 Not Found
我用过:
http://localhost:50079/Import/Test/abc/cde
Type :Get
web api method:
[ActionName("Test")]
public bool getconnection(string id,string value)
{
return true;
}
我不想使用任何路线...让我知道为什么如果我传递多个参数为什么它不被识别..
答案 0 :(得分:4)
您必须指定匹配的路线
config.Routes.MapHttpRoute(
name: "TestRoute",
routeTemplate: "api/{controller}/{id}/{value}",
defaults: new { id = RouteParameter.Optional, value = RouteParameter.Optional }
);
试试上面的
答案 1 :(得分:2)
你把HttpGet属性放在方法上,就像这样?
//http://localhost:50079/api/Import/abc?value=cde
[HttpGet]
[ActionName("Test")]
public bool getconnection(string id,string value)
{
return true;
}
答案 2 :(得分:1)
TGH's answer是更优雅的解决方案。
但是,如果您不想使用任何路由,则必须将其他参数作为查询字符串参数传递,因为路由引擎不知道要映射到哪些变量的值({{1除外)在默认路由中配置的参数。)
基于Web API约定,如果您有这样的控制器:
id
相应的URI将是:
public class ImportController : ApiController
{
[ActionName("Test")]
public bool GetConnection(string id, string value)
{
return true;
}
}
如果要映射以使用http://localhost:50079/api/Import/abc?value=cde
属性,则需要将API配置为按操作名称进行路由。请参阅this tutorial。
答案 3 :(得分:0)
[FromBody]一个参数和[FromUri]一个参数。 例如:
public bool InserOrUpdate([FromBody] User user,[FromUri] IsNew)
[FromBody] => ajax数据 [FromUri] => QueryString数据
但解决方案在this connection。