ASP.NET 5 beta6+ 应用程序中的 IdentityUserClaim 实例化和类型转换错误

IdentityUserClaim instantiation and type casting error in ASP.NET 5 beta6+ app

问题描述

我最近将我的 ASP.NET 5 应用程序从 beta 6 升级到 beta 8。我遇到了几个问题,但是这个问题让我很困惑。我遇到以下错误:

Using the generic type IdentityUserClaim<TKey>' requires 1 type argument SampleProject.DNX 4.5.1

代码

IdentityUserClaim<string> IdentityUserClaimString = await applicationDbContext.UserClaims.SingleAsync(c => c.Id == claimId);

            IdentityUserClaim identityUserClaim = new IdentityUserClaim();
            identityUserClaim.Id = IdentityUserClaimString.Id;
            identityUserClaim.ClaimType = IdentityUserClaimString.ClaimType;
            identityUserClaim.ClaimValue = IdentityUserClaimString.ClaimValue;
            identityUserClaim.UserId = IdentityUserClaimString.UserId;
            return (identityUserClaim);

尝试次数

我尝试制作一个通用的 class,但通常我尽量不重写基本包,甚至不扩展给我们的包。

据我了解错误,它希望我将 IdentitUserClaim 更改为 IdentityUserClaim<int> 之类的内容。然而,这不是我理解这个库的方式,也不是我在 ASP.NET5 到 beta6 中使用它的方式。我一直在一般地使用它。

所以我的问题是,有没有什么方法可以解决这个问题而不必彻底重写我的代码,或者我是否必须重写我的自定义身份声明,因为我不知道有一些代码规则的更改或执行在 beta6+ 包 Microsoft.AspNet.Identity.EntityFramework 中?

请相信我,我有一个用于制作自定义声明的用例。感谢您的时间、耐心和考虑。

曾经有一个非泛型 IdentityUserClaim class,它使用 string 作为 TKey 的类型参数:

public class IdentityUserClaim : IdentityUserClaim<string> { }

此 class(以及其他几个),但是 were removed 在 beta7 中。如果愿意,您可以再次将 class 添加到您自己的代码库中,或者只使用 IdentityUserClaim<string>.