控制器ActionResult中的Guid参数始终为null

本文关键字:null 参数 ActionResult 中的 Guid 控制器 | 更新日期: 2023-09-27 17:58:39

我有一个控制器,如下所示:

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个值具有来自URL的值,但entitlementid始终是null。问题出在哪里?

路线配置

config.Routes.MapHttpRoute( 
    name: "DefaultApi", 
    routeTemplate: "{controller}/{action}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
);

控制器ActionResult中的Guid参数始终为null

在查询字符串的末尾包含一个额外的斜线/

...&entitlementid=B5630B37-0820-4EB0-8A2A-000C44885590/

这导致CCD_ 4绑定变得无效。如果删除斜杠并发出请求,则会填充entitlementid

http://*:*/MyController/MyControllerMethod/?currency=eur&edition=DSSTANDARD&systems=50&version=6.3&entitlementid=B5630B37-0820-4EB0-8A2A-000C44885590

应按预期工作。