Настройка upp AspNet.Identity.RavenDB с использованием Tugberk Ugurlu: пример проекта

1

Поэтому я внедрил все из этого образца проектов из github: http://www.tugberkugurlu.com/archive/aspnet-identity-ravendb--fully-asynchronous-new-and-sweet-asp-net-identity-implementation- для-ravendb

Но я получаю сообщение об ошибке в файле IdentityModels.cs

public class ApplicationUser : RavenUser
{
    public ApplicationUser(string userName)
        : base(userName) <--- here, explained below
    {
    }
}

Ошибка говорит: Ошибка 29 'AspNet.Identity.RavenDB.Entities.RavenUser' не содержит конструктор, который принимает 1 аргумент

Но в примере Tugberk Ugurlus-prject все работает нормально. Я не знаю, чего мне не хватает. ApplicationUser выше наследования ведьмы от RavenUser, если я в примере проекта переходит к определению для RavenUser, он приводит меня к этому файлу:

public class RavenUser : IUser
{
    private List<RavenUserClaim> _claims;
    private List<RavenUserLogin> _logins;

    [JsonConstructor]
    public RavenUser(string userName)
    {
        if (userName == null) throw new ArgumentNullException("userName");

        Id = GenerateKey(userName);
        UserName = userName;
        _claims = new List<RavenUserClaim>();
        _logins = new List<RavenUserLogin>();
    }

    public RavenUser(string userName, string email) : this(userName)
    {
        Email = email;
    }

    public string Id { get; private set; }
    public string UserName { get; set; }
    public string Email { get; private set; }
    public string PhoneNumber { get; private set; }
    public string PasswordHash { get; private set; }
    public string SecurityStamp { get; private set; }
    public bool IsLockoutEnabled { get; private set; }
    public bool IsTwoFactorEnabled { get; private set; }

    public int AccessFailedCount { get; private set; }
    public DateTimeOffset? LockoutEndDate { get; private set; }

    public IEnumerable<RavenUserClaim> Claims
    {
        get
        {
            return _claims;
        }

        private set
        {
            if (_claims == null)
            {
                _claims = new List<RavenUserClaim>();
            }

            _claims.AddRange(value);
        }
    }
    public IEnumerable<RavenUserLogin> Logins
    {
        get
        {
            return _logins;
        }

        private set
        {
            if (_logins == null)
            {
                _logins = new List<RavenUserLogin>();
            }

            _logins.AddRange(value);
        }
    }

    public virtual void EnableTwoFactorAuthentication()
    {
        IsTwoFactorEnabled = true;
    }

    public virtual void DisableTwoFactorAuthentication()
    {
        IsTwoFactorEnabled = false;
    }

    public virtual void EnableLockout()
    {
        IsLockoutEnabled = true;
    }

    public virtual void DisableLockout()
    {
        IsLockoutEnabled = false;
    }

    public virtual void SetEmail(string email)
    {
        Email = email;
    }

    public virtual void SetPhoneNumber(string phoneNumber)
    {
        PhoneNumber = phoneNumber;
    }

    public virtual void SetPasswordHash(string passwordHash)
    {
        PasswordHash = passwordHash;
    }

    public virtual void SetSecurityStamp(string securityStamp)
    {
        SecurityStamp = securityStamp;
    }

    public virtual void IncrementAccessFailedCount()
    {
        AccessFailedCount++;
    }

    public virtual void ResetAccessFailedCount()
    {
        AccessFailedCount = 0;
    }

    public virtual void LockUntil(DateTimeOffset lockoutEndDate)
    {
        LockoutEndDate = lockoutEndDate;
    }

    public virtual void AddClaim(Claim claim)
    {
        if (claim == null)
        {
            throw new ArgumentNullException("claim");
        }

        AddClaim(new RavenUserClaim(claim));
    }

    public virtual void AddClaim(RavenUserClaim ravenUserClaim)
    {
        if (ravenUserClaim == null)
        {
            throw new ArgumentNullException("ravenUserClaim");
        }

        _claims.Add(ravenUserClaim);
    }

    public virtual void RemoveClaim(RavenUserClaim ravenUserClaim)
    {
        if (ravenUserClaim == null)
        {
            throw new ArgumentNullException("ravenUserClaim");
        }

        _claims.Remove(ravenUserClaim);
    }

    public virtual void AddLogin(RavenUserLogin ravenUserLogin)
    {
        if (ravenUserLogin == null)
        {
            throw new ArgumentNullException("ravenUserLogin");
        }

        _logins.Add(ravenUserLogin);
    }

    public virtual void RemoveLogin(RavenUserLogin ravenUserLogin)
    {
        if (ravenUserLogin == null)
        {
            throw new ArgumentNullException("ravenUserLogin");
        }

        _logins.Remove(ravenUserLogin);
    }

    // statics

    internal static string GenerateKey(string userName)
    {
        return string.Format(Constants.RavenUserKeyTemplate, userName);
    }
}

Но в моем собственном проекте наследование также является RavenUser. Но если я перейду к этому определению, это приведет меня к этому файлу MetaData:

#region Assembly AspNet.Identity.RavenDB.dll, v1.0.1.0
//          C:\Users\Computer\Desktop\AppHarborRepository\Blog\packages\AspNet.Identity.RavenDB.1.0.1\lib\n    et45\AspNet.Identity.RavenDB.dll
#endregion

using System.Collections.Generic;

namespace AspNet.Identity.RavenDB.Entities
{
public class RavenUser : User
{
    public RavenUser();

    public ICollection<RavenUserClaim> Claims { get; set; }
    public ICollection<RavenUserLogin> Logins { get; set; }
}
}
  • 0
    Вы уверены, что используете последнюю предварительную версию? У меня была проблема, когда он сказал, что не принимает 0 аргументов. Я использую Pre-6, вышла с 1.0.1
Теги:
model-view-controller
asp.net-mvc
ravendb

1 ответ

0

На первый взгляд похоже, что в вашем коде есть неправильный оператор "using", который указывает на AspNet.Identity.RavenDB RavenUser вместо вашей собственной реализации.

Посмотрите, есть ли "using AspNet.Identity.RavenDB.Entities" в вашем классе ApplicationUser и удалите его. Если это нарушает другие части вашего кода, вы можете захотеть присвоить вашему классу RavenUser другое имя.

  • 0
    Нет ... это не правильно. Мы хотим использовать класс RavenUser и эту реализацию. Более новая предварительная версия переносит новую переменную в базовый конструктор RavenUser, фактически несколько изменений изменилось, и в статье блога нет данных. Нужно посмотреть на тесты и образец

Ещё вопросы

Сообщество Overcoder
Наверх
Меню