我有一个如下控制器:
public async Task<IHttpActionResult> MyControllerMethod(string currency = null,
string edition = null,
int? systems = null,
string version = null,
Guid? entitlementid = null)
{
//Code here
}
当我从此URL执行此控制器时:
http://*:*/MyController/MyControllerMethod/?currency=eur&edition=DSSTANDARD&systems=50&version=6.3/
方法的所有参数都具有如下值:
currency = eur
edition = DSSTANDARD
systems = 50
version = 6.3
但是,如果我这样做,添加最后一个参数:
...&entitlementid=B5630B37-0820-4EB0-8A2A-000C44885590/
然后,前3个值包含来自网址的值,但entitlementid
始终为null
。
可能是什么问题?
路线配置
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
答案 0 :(得分:1)
您在查询字符串
的末尾添加了一个额外的斜杠/
...&entitlementid=B5630B37-0820-4EB0-8A2A-000C44885590/
导致Guid
绑定失效。如果您删除斜杠并发出请求,则会填充entitlementid
。
http://*:*/MyController/MyControllerMethod/?currency=eur&edition=DSSTANDARD&systems=50&version=6.3&entitlementid=B5630B37-0820-4EB0-8A2A-000C44885590
应该按预期工作。