Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在尝试重写ClaimSideEntityFactory上的CreateSync函数_C#_Asp.net Mvc_Identity_Owin_Claims - Fatal编程技术网

C# 正在尝试重写ClaimSideEntityFactory上的CreateSync函数

C# 正在尝试重写ClaimSideEntityFactory上的CreateSync函数,c#,asp.net-mvc,identity,owin,claims,C#,Asp.net Mvc,Identity,Owin,Claims,几天前,我找到了一本Ben Foster的关于MVC、Identity和OWIN的非常好的教程。教程是 我刚刚完成了教程,在尝试重写函数“CreateAsync”时发现了一个问题。VisualStudio不允许这样做 代码如下: public class AppUserClaimsIdentityFactory : ClaimsIdentityFactory<AppUser> { public override async Task<ClaimsIdentity>

几天前,我找到了一本Ben Foster的关于MVC、Identity和OWIN的非常好的教程。教程是

我刚刚完成了教程,在尝试重写函数“CreateAsync”时发现了一个问题。VisualStudio不允许这样做

代码如下:

public class AppUserClaimsIdentityFactory : ClaimsIdentityFactory<AppUser>
{
    public override async Task<ClaimsIdentity> CreateAsync(
        UserManager<AppUser> manager, 
        AppUser user, 
        string authenticationType)
    {
        var identity = await base.CreateAsync(manager, user, authenticationType);
        identity.AddClaim(new Claim(ClaimTypes.Country, user.Country));

        return identity;
    }
}
公共类AppUserClaimsIdentityFactory:ClaimsIdentityFactory
{
公共重写异步任务CreateAsync(
用户管理器,
应用程序用户,
字符串身份验证类型)
{
var identity=await base.CreateAsync(管理器、用户、authenticationType);
identity.AddClaim(新声明(ClaimTypes.Country,user.Country));
返回身份;
}
}
有人知道我如何解决这个问题吗

解决方案

感谢@ETorre,这是最后的代码

public class AppUserClaimsIdentityFactory : ClaimsIdentityFactory<AppUser, string>
{
    public async override Task<ClaimsIdentity> CreateAsync(UserManager<AppUser, string> manager, 
            AppUser user, string authenticationType)
    {
        var identity = await base.CreateAsync(manager, user, authenticationType);
        identity.AddClaim(new Claim(ClaimTypes.Country, user.Country));

        return identity;
    }
}
公共类AppUserClaimsIdentityFactory:ClaimsIdentityFactory
{
公共异步覆盖任务CreateAsync(UserManager,
AppUser用户,字符串身份验证类型)
{
var identity=await base.CreateAsync(管理器、用户、authenticationType);
identity.AddClaim(新声明(ClaimTypes.Country,user.Country));
返回身份;
}
}

您可以尝试查看版本吗?git上的文件使用Microsoft.AspNet.Identity.Core.dll版本1,现在是vervion 2。尝试将ClaimSideEntityFactory嵌入其中

我创建了一个与上述类似的索赔工厂AppUserClaimSideEntityFactory,但希望添加关于如何使用该工厂的说明。我在AppUserManager构造函数中添加了以下行,它可以根据需要工作:

public class AppUserManager : UserManager<AppUser, string>
{
    public AppUserManager(IUserStore<AppUser> userStore) : base(userStore)
    {
        ClaimsIdentityFactory = new AppUserClaimsIdentityFactory();
...
公共类AppUserManager:UserManager
{
公共AppUserManager(IUserStore userStore):基本(userStore)
{
ClaimSideEntityFactory=新的AppUserClaimSideEntityFactory();
...

您可以将代码作为文本附加。没有人想调试代码的图片。谢谢,我刚刚将代码作为文本附加。@matthewstore@ETorre,我会尝试的!