【发布时间】:2016-01-13 15:39:33
【问题描述】:
控制器签名:
public class UserAlertsController : ApiController
public IHttpActionResult Post(Guid id, List<long> users)
路线:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
邮递员请求:
http://localhost:50828/api/UserAlerts/4af3fee7-84ae-48fa-9215-45a00c35dbf
Content-Type application/json
[1,2]
通过上述设置,我收到了消息:
"Message": "The request is invalid.",
"MessageDetail": "The parameters dictionary contains a null entry
for parameter 'id' of non-nullable type 'System.Guid'"
我也使用标准的 global.asax
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
谁能告诉我哪里出错了
如果我将操作签名更改为:
public IHttpActionResult Post(string id, long[] users)
那么就绑定正确了,但是如果把id改成Guid就会报错。
【问题讨论】:
-
您将 guid 作为路由参数传递,但您的路由与您使用的 url 不匹配。
标签: c# rest routes asp.net-web-api2 model-binding