Невозможно открыть базу данных «Идентичность», запрошенную при входе в систему. Ошибка входа. Ошибка входа для пользователя 'DESKTOP \ User' - PullRequest
0 голосов
/ 09 апреля 2020

Итак, я получаю эту ошибку, когда пытаюсь запустить свой проект ... Проект был отправлен мне одним из членов моей группы.

"Невозможно открыть базу данных" Идентификационные данные ", запрошенные при входе в систему. Ошибка при входе в систему. Ошибка входа пользователя в систему"

Сам проект является веб-приложением, использующим MVC. У нас есть база данных для списка клубов / игроков. Все, что я сейчас пытаюсь сделать, - это просто запустить его, чтобы посмотреть, что моя группа завершила, но он продолжает показывать мне ошибку выше. Я много раз искал в Интернете, но безрезультатно, поэтому я пишу здесь, чтобы обратиться за помощью.

SQL Обозреватель объектов сервера

Ниже перечислены следующие элементы:

IdentitySeedData.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.DependencyInjection;

namespace P0.Models
{
    public static class IdentitySeedData
    {
        private const string adminUser = "Admin";
        private const string adminPassword = "Secret123$";
        public static async void EnsurePopulated(IApplicationBuilder app)
        {
            UserManager<IdentityUser> userManager = app.ApplicationServices
                .GetRequiredService<UserManager<IdentityUser>>();

            IdentityUser user = await userManager.FindByNameAsync(adminUser);

            if (user == null)
            {
                user = new IdentityUser("Admin");
                await userManager.CreateAsync(user);
            }
        }
    }
}

AppIdentityContext.cs

using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;


namespace P0.Models
{
    public class AppIdentityDbContext : IdentityDbContext<IdentityUser>
    {
        public AppIdentityDbContext(DbContextOptions<AppIdentityDbContext> options)
            : base(options) { }
    }
}

Program.cs

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;

namespace P0
{
    public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseDefaultServiceProvider(options =>
                options.ValidateScopes = false)
                .Build();
    }
}

Startup.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using P0.Models;
using Microsoft.Extensions.Configuration;
using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.Identity;

namespace P0
{
    public class Startup
    {
        public Startup(IConfiguration configuration) =>
            Configuration = configuration;

        public IConfiguration Configuration { get; }
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(
                    Configuration["Data:ConnectionStrings:SoccerClubs"]));
            services.AddDbContext<AppIdentityDbContext>(options =>
                options.UseSqlServer(
                    Configuration["Data:ConnectionStrings:AppIdentityDbContext"]));
            services.AddIdentity<IdentityUser, IdentityRole>()
                .AddEntityFrameworkStores<AppIdentityDbContext>()
                .AddDefaultTokenProviders();
            services.AddTransient<IClubRepository, EFClubRepository>();
            services.AddTransient<IPlayerRepository, EFPlayerRepository>();
            services.AddMvc();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseStaticFiles();
            app.UseAuthentication();
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
            SeedData.EnsurePopulated(app);
            IdentitySeedData.EnsurePopulated(app);
        }
    }
}

appsetting. json

{
  "Data": {
    "ConnectionStrings": {
      "SoccerClubs": "Server=(localdb)\\MSSQLLocalDB;Database=SoccerClubs;Trusted_Connection=True;MultipleActiveResultSets=true",
      "AppIdentityDbContext": "Server=(localdb)\\MSSQLLocalDB;Database=Identity;Trusted_Connection=True;MultipleActiveResultSets=true"
    }
    }
}

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

Спасибо за помощь. Я не хотел отмечать это как решенное без публикации того, что я сделал, чтобы исправить мою проблему ...

Я получил свое исправление путем принудительного добавления базы данных на сервер вручную с помощью SQL Обозреватель объектов сервера, делая в консоли диспетчера пакетов:

update-database Initial -context AppIdentityDBContext

Затем следует запрос SQL на сервер / базу данных:

CREATE TABLE [dbo].[AspNetRoles] (
    [Id]                NVARCHAR(256) NOT NULL,
    [ConcurrencyStamp]  NVARCHAR(MAX) NULL,
    [Name]              NVARCHAR(256) NULL,
    [NormalizedName]    NVARCHAR(256) NULL,
    CONSTRAINT [PK_AspNetRoles] PRIMARY KEY ([Id])
);

CREATE TABLE [dbo].[AspNetUsers] (
[Id]                   NVARCHAR (256) NOT NULL,
[AccessFailedCount]    INT            NOT NULL,
[ConcurrencyStamp]     NVARCHAR (MAX) NULL,
[Email]                NVARCHAR (256) NULL,
[EmailConfirmed]       BIT            NOT NULL,
[LockoutEnabled]       BIT            NOT NULL,
[LockoutEnd]           DATETIME       NULL,
[NormalizedEmail]      NVARCHAR (256) NULL,
[NormalizedUserName]   NVARCHAR (256) NULL,
[PasswordHash]         NVARCHAR (MAX) NULL,
[PhoneNumber]          NVARCHAR (MAX) NULL,
[PhoneNumberConfirmed] BIT            NOT NULL,
[SecurityStamp]        NVARCHAR (MAX) NULL,
[TwoFactorEnabled]     BIT            NOT NULL,
[UserName]             NVARCHAR (256) NOT NULL,
CONSTRAINT [PK_AspNetUsers] PRIMARY KEY CLUSTERED ([Id] ASC)
);

CREATE TABLE [dbo].[AspNetRoleClaims] (
[Id]         INT            IDENTITY (1, 1) NOT NULL,
[ClaimType]  NVARCHAR (MAX) NULL,
[ClaimValue] NVARCHAR (MAX) NULL,
[RoleId]     NVARCHAR (256) NOT NULL,
CONSTRAINT [PK_AspNetRoleClaims] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_AspNetRoleClaims_AspNetRoles_RoleId] FOREIGN KEY ([RoleId]) REFERENCES [dbo].[AspNetRoles] ([Id]) ON DELETE CASCADE
);

CREATE TABLE [dbo].[AspNetUserClaims] (
[Id]         INT            IDENTITY (1, 1) NOT NULL,
[ClaimType]  NVARCHAR (MAX) NULL,
[ClaimValue] NVARCHAR (MAX) NULL,
[UserId]     NVARCHAR (256) NOT NULL,
CONSTRAINT [PK_AspNetUserClaims] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_AspNetUserClaims_AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE
);

CREATE TABLE [dbo].[AspNetUserLogins] (
[LoginProvider] NVARCHAR (128) NOT NULL,
[ProviderKey]   NVARCHAR (128) NOT NULL,
[ProviderDisplayName]   NVARCHAR (128) NULL,
[UserId]        NVARCHAR (256) NOT NULL,
CONSTRAINT [PK_AspNetUserLogins] PRIMARY KEY CLUSTERED ([LoginProvider] ASC, [ProviderKey] ASC, [UserId] ASC),
CONSTRAINT [FK_AspNetUserLogins_AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE
);

CREATE TABLE [dbo].[AspNetUserRoles] (
[UserId]    NVARCHAR (256) NOT NULL,
[RoleId]    NVARCHAR (256) NOT NULL,
CONSTRAINT [PK_AspNetUserRoles] PRIMARY KEY CLUSTERED ([UserId] ASC, [RoleId] ASC),
CONSTRAINT [FK_AspNetUserRoles_AspNetRoles_RoleId] FOREIGN KEY ([RoleId]) REFERENCES [dbo].[AspNetRoles] ([Id]) ON DELETE CASCADE,
CONSTRAINT [FK_AspNetUserRoles_AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE
 );

CREATE TABLE [dbo].[AspNetUserTokens] (
[UserId]    NVARCHAR (256) NOT NULL,
[LoginProvider] NVARCHAR (256) NOT NULL,
[Name]  NVARCHAR (256) NOT NULL,
[Value] NVARCHAR (MAX) NOT NULL,
CONSTRAINT [PK_AspNetUserTokens] PRIMARY KEY CLUSTERED ([UserId] ASC, [LoginProvider] ASC, [Name] ASC),
CONSTRAINT [FK_AspNetUserTokens_AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE
 );

GO
CREATE NONCLUSTERED INDEX [IX_AspNetRoleClaims_RoleId]
ON [dbo].[AspNetRoleClaims]([RoleId] ASC);

GO
CREATE UNIQUE NONCLUSTERED INDEX [RoleNameIndex]
ON [dbo].[AspNetRoles]([NormalizedName] ASC)
WHERE [NormalizedName] IS NOT NULL;

GO
CREATE NONCLUSTERED INDEX [IX_AspNetUserClaims_UserId]
ON [dbo].[AspNetUserClaims]([UserId] ASC);

GO
CREATE NONCLUSTERED INDEX [IX_AspNetUserLogins_UserId]
ON [dbo].[AspNetUserLogins]([UserId] ASC);

GO
CREATE NONCLUSTERED INDEX [IX_AspNetUserRoles_RoleId]
ON [dbo].[AspNetUserRoles]([RoleId] ASC);

GO
CREATE NONCLUSTERED INDEX [EmailIndex]
ON [dbo].[AspNetUsers]([NormalizedEmail] ASC);

GO
CREATE UNIQUE NONCLUSTERED INDEX [UserNameIndex]
ON [dbo].[AspNetUsers]([NormalizedUserName] ASC)
WHERE [NormalizedUserName] IS NOT NULL;

0 голосов
/ 10 апреля 2020

Ваше приложение использует «Доверенное соединение» с базой данных SQL Сервера. Поэтому он пытается войти в систему с текущим пользователем компьютера.

Вам необходимо go в SQL Обозреватель объектов сервера или SQL Server Management Studio и добавить «DESKTOP \ User» в качестве имени для входа. SQL Сервер и пользователь в вашей базе данных.

Вот шаги

https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/create-a-database-user?view=sql-server-ver15#SSMSProcedure

Снимок экрана страницы добавления пользователя

https://serverfault.com/questions/366492/how-can-i-add-myself-to-my-local-sql-servers-windows-authentication

Убедитесь, что go на вкладке «Отображение пользователей» и отметьте базу данных, которую вы хотите использовать. Если это разработка, вы можете поставить галочку "db_owner", чтобы у вас были все разрешения.

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