我有带有 2 种操作方法的 webapi 控制器,如下所示:
public List<AlertModel> Get()
{
return _alertService.GetAllForUser(_loginService.GetUserID());
}
public AlertModel Get(int id)
{
return _alertService.GetByID(id);
}
但是,当我向我提出请求时,api/alerts
出现以下错误:
参数字典包含“ekmSMS.Web.Api.AlertsController”中方法“ekmSMS.Common.Models.AlertModel Get(Int32)”的不可为空类型“System.Int32”的参数“id”的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。
我在中设置了以下路线global.asax
:
routes.MapHttpRoute("Api", "api/{controller}/{id}", new { id = UrlParameter.Optional });
这种类型的重载应该有效吗?如果应该我做错了什么?
编辑
虽然这个问题是关于 WebAPI 的,但控制器是 MVC3 项目的一部分,这些是另一个MapRoutes
:
routes.MapRoute("Templates", "templates/{folder}/{name}", new { controller = "templates", action = "index", folder = "", name = "" });
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "app", action = "index", id = UrlParameter.Optional });