Обновление asp.net core 1.1 до версии 3.0 - PullRequest
0 голосов
/ 31 октября 2019

недавно обновил проект с ядром asp.net до версии 1.1. Все пакеты обновлены. и все исправления startup.cs сделаны на основе документации, которую я нашел в Интернете.

У меня возникла серия ошибок, связанных с областями пользователей, ролей и утверждений в существующем коде, который работал раньше. Мне нужно найти решение с минимальным изменением БД. Я уверен, что упускаю что-то простое.

Вот пример кода, где роли не имеют претензий. которая выдает ошибку CS1061
«Роль» не содержит определения «Утверждения», и доступный метод расширения «Утверждения», принимающий первый аргумент типа «Роль», не найден (отсутствует директива using или ссылка на сборку?)

var roles = await _db.Roles.Where(x => x.Claims.Any(y => y.ClaimType == "Leadership")).ToListAsync().ConfigureAwait(false);

CS1061 «Пользователь» не содержит определения «Роли», и нет доступного метода расширения «Роли», принимающего первый аргумент типа «Пользователь» (вы пропускаете использованиедиректива или ссылка на сборку?)

await _db.Users.Include(x => x.Roles).....

У меня есть пользовательское определение пользователя и роли с добавленными переменными.

public class User : IdentityUser<int>
public class Role : IdentityRole<int>

Вот модель создания

public class ApplicationDbContext : IdentityDbContext<User, Role, int>
{
 ........
    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);

        builder.HasDefaultSchema("core");
        builder.Entity<User>().ToTable("Users", "core");
        builder.Entity<Role>().ToTable("Roles", "core");
        builder.Entity<IdentityUserClaim<int>>().ToTable("UserClaims", "core");
        builder.Entity<IdentityUserRole<int>>().ToTable("UserRoles", "core").HasKey(x => new { x.UserId, x.RoleId });
        builder.Entity<IdentityUserLogin<int>>().ToTable("UserExternalLogins", "core").HasKey(x => x.ProviderKey);
        builder.Entity<IdentityUserToken<int>>().ToTable("UserTokens", "core").HasKey(x => new { x.UserId, x.Value });
        builder.Entity<IdentityRoleClaim<int>>().ToTable("RoleClaims", "core");

, а также часть запуска ConfigureServices для запуска. 1018 *

    public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.            
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"), 
            sqlServerOptionsAction: sqlOptions =>
            {
                sqlOptions.EnableRetryOnFailure(
                maxRetryCount: 10,
                maxRetryDelay: TimeSpan.FromSeconds(30),
                errorNumbersToAdd: null);
            }), ServiceLifetime.Transient);
        services.AddIdentity<User, Role>(options => options.SignIn.RequireConfirmedAccount = true)
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();
        services.AddControllersWithViews();
        services.AddRazorPages();
        services.Configure<IdentityOptions>(options =>
        {
            // Default Lockout settings.
            options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
            options.Lockout.MaxFailedAccessAttempts = 10;
            options.Lockout.AllowedForNewUsers = true;
            options.Password.RequireDigit = true;
            options.Password.RequireLowercase = true;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireUppercase = false;
            options.Password.RequiredLength = 6;
            options.User.RequireUniqueEmail = true;
        });
        services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
        .AddCookie(options =>
        {
            options.LoginPath = "/login";
            options.LogoutPath = "/logout";
            options.AccessDeniedPath = "/unauthorized";
            options.Cookie.Expiration = TimeSpan.FromDays(150);
        });
        services.AddSingleton<IAuthorizationHandler, AuthorizeMemberHandler>();
        services.AddSingleton<IAuthorizationHandler, AuthorizeMemberOrBotHandler>();
        services.AddAuthorization(options =>
        {
            options.AddPolicy("Mgmt", policy => policy.RequireClaim("Mgmt"));
            options.AddPolicy("Member", policy => policy.Requirements.Add(new MemberRequirement()));
            options.AddPolicy("MemberOrBot", policy => policy.Requirements.Add(new MemberOrBotRequirement()));
        });

        services.AddScoped<ShoppingBag>();
        services.Configure<FormOptions>(x => x.ValueCountLimit = 2048);

        services.AddMvc();
        services.AddRouting(options => {
            options.LowercaseUrls = true;
            options.AppendTrailingSlash = true;
        });
        services.AddMvc(options => options.EnableEndpointRouting = false);

Пожалуйста, дайте мне знать, если я забыл какую-либо информацию,спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...