0

我正在寻找有关如何在 Web API 项目中设置路由的提示。我设置了一个名为 Resident 的控制器,其方法如下:

public ResidentModel GetResidentInfo(int resId)
{
    //code to return ResidentModel object 

}

我尝试了以下方法来映射到 route.config 文件中的此方法。

 routes.MapRoute(
            name: "Resident",
            url: "{controller}/{action}/{id}",
            defaults: new {  id = UrlParameter.Optional }
            );

我正在尝试通过多种方式访问​​此方法:

http://localhost/resident/1 or 
http://localhost/resident/GetResidentInfo/1 etc... 

我正在寻找有关设置控制器然后映射到该控制器方法的过程的一些指导,因为当我尝试访问我创建的方法时它无法识别它们。提前致谢。

4

1 回答 1

4

首先,您的控制器类应该被调用ResidentController(不仅仅是Resident)并继承自ApiController(它确实需要实现IHttpController,但从该类继承是最简单的方法)。

其次,您应该使用MapHttpRoute而不是MapRoute用于 Web API 控制器。

接下来,id路由上的参数与您的操作中的参数不匹配。如果您有如下路线,您应该能够访问第二个 URL:

routes.MapHttpRoute(
    name: "WithAction",
    routeTemplate: "{controller}/{action}/{resId}");

这将匹配第一个:

routes.MapHttpRoute(
    name: "DefaultAction",
    routeTemplate: "{controller}/{resId}",
    defaults: new { action = "GetResidentInfo" });
于 2012-11-28T00:48:16.267 回答