猿问

无法创建 IdentityUserClaim 类型的常量值

我知道你必须说这篇文章是重复的,但我已经去了多个帖子,答案对我的代码不起作用。


这是一个 Asp net web api 服务器。看一看:


    // GET: api/Vessels

    [HttpGet, Route(""), Route("{assets}")]

    public IQueryable<Vessel> GetVessels(string assets = "all")

    {

        var user = GetUser();


        if (IsAdmin(user))

        {

            return assets == "all"

                ? GetChildren(db.Vessels)

                : db.Vessels;

        }


        var claims = user.Claims

            .Where(c => c.ClaimType == "vessel")

            .ToList();


        var vessels = db.Vessels

            .Where(v => claims.Any(c => v.Id == int.Parse(c.ClaimValue)))

            .toList(); // will evaluate the query and get error


        return assets == "all"

            ? GetChildren(vessels)

            : vessels;

    }

这是例外:


EntityFramework.SqlServer.dll 中出现类型为“System.NotSupportedException”的异常,但未在用户代码中处理附加信息:无法创建类型为“Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim”的常量值。在此上下文中仅支持原始类型或枚举类型。


在我的测试中,我意识到错误在这个块中:


claims.Any(c => v.Id == int.Parse(c.ClaimValue))

如果我将其更改为 5 或其他任何内容,它就可以工作!


慕斯王
浏览 103回答 2
2回答
随时随地看视频慕课网APP
我要回答