【发布时间】:2017-01-02 14:19:57
【问题描述】:
我有以下 Web Api 类:
public class BizAuthController : ApiController
{
[HttpPost]
public __BizAuthModel Register([FromBody] __BizAuthModel authInfo)
{
if (ModelState.IsValid)
{
//... do whatever
}
throw new HttpResponseException(HttpStatusCode.BadRequest);
}
[HttpPost]
public __BizAuthModel Login([FromBody] __BizAuthModel authInfo)
{
if (ModelState.IsValid)
{
//... do whatever
}
throw new HttpResponseException(HttpStatusCode.Forbidden);
}
}
这是我的 WebApiConfig(标准,我没碰过):
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
现在,如果我删除“登录”方法,则可以调用“注册”并正常工作。如果我保留“登录”方法,则调用“注册”返回 Http 错误 500。 为什么?我该如何解决这个问题?
【问题讨论】:
-
框架不知道在 POST 上使用哪个操作。这两个动作匹配默认的
routeTemplate。您打算如何调用该操作?您可能需要更新到api/{controller}/{action}/{id}的基于约定的路由并按名称而不是仅通过 HttpMethod 调用操作。即:POST api/BizAuth/Register和POST api/BizAuth/Login
标签: c# asp.net-mvc asp.net-web-api asp.net-web-api-routing