我正在尝试编写 API。签名看起来像这样:
public class CardsController : ApiController
{
[HttpGet]
public ClientData NewGame(){...}
[HttpGet]
public ClientData Deal(int sessionId){...}
[HttpGet]
public ClientData Stand(int sessionId){...}
}
在默认情况下,我收到一个错误,说我的班级无法区分 Deal 和 Stand。经过一番研究,我发现这是一个路由问题。所以我决定更新我的路线。
我的 global.asax.cs 现在看起来像这样:
public class MvcApplication : HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapHttpRoute("api", "api/{controller}/{action}/{value}", new { value = RouteParameter.Optional});
}
}
Going tohttp://localhost:54924/api/Cards/Stand/19
会给出一个错误,指出没有找到 HttpResource,并且 going tohttp://localhost:54924/api/Cards/Stand
会触发该NewGame()
操作。如何让 Stand 和 Deal 在同一个控制器上工作?