我的HttpConfiguration代码:
config.Routes.MapHttpRoute(
name: "ApiByToken",
routeTemplate: "web_api/{controller}/{action}/{token}",
defaults: new { token = RouteParameter.Optional}
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "web_api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我有一个api,它用于登录:
[HttpPost]
public string Login([FromUri]string token, [FromBody]string user, [FromBody] string pwd)
{
//...
}
让我烦恼的是,如果我这样编码,会有一个例外,说我在发送请求时无法将多个变量(用户和密码)绑定到请求。
但如果我删除[fromBody]标签中的一个,那就没关系了:
public string Login([FromUri]string token, [FromBody]string user)
public string Login([FromUri]string token, [FromBody] string pwd)
答案 0 :(得分:0)
最多允许一个参数从邮件正文中读取。所以这不起作用:
// Caution: Will not work!
public HttpResponseMessage Post([FromBody] int id, [FromBody] string name) { ... }
此规则的原因是请求正文可能存储在只能读取一次的非缓冲流中。