我正在尝试使用一个简单的WebAPI项目。
我有一个WebApiConfig.cs:
config.Routes.MapHttpRoute(
name: "cap-getvehicleoptions",
routeTemplate: "api/{controller}/{action}/{type}/{capid}",
defaults: new { controller="Cap", action="GetVehicleOptions" }
);
然后这个控制器:
public class CapController : ApiController
{
public string GetVehicleOptions(string type, int capid)
{
var response = CapService.GetVehicleOptions(type, capid);
response.Url = string.Format("/api/cap/getvehicleoptions/{0}/{1}", type, capid.ToString());
return Serialization.Serialize(response);
}
}
当我跑步时试试这个:http://localhost:62924/api/cap/GetVehicleOptions/car/55555/
我明白了:
{“Message”:“找不到与请求URI'http://localhost:62924/api/cap/GetVehicleOptions/car/55555/'匹配的HTTP资源。”,“MessageDetail”:“在控制器'Cap'上找不到与请求匹配的操作。” }
我想知道是不是因为int capid属性,但尝试了字符串,但没有帮助。
感谢
答案 0 :(得分:1)
检查您是否正确配置: 您的注册方法中的WebApiConfig.cs中的路由是什么?
您的WebApiConfig是否已添加到GlobalConfiguration?
示例IN Global.asax:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
//...
}
答案 1 :(得分:1)
在您的路线模板中,操作名称包含在URI中。在这种情况下,使用属性指定允许的HTTP方法。
使用[HttpGet]属性装饰动作,它应该可以工作。