存储库管理器在.net core中收到错误的连接字符串

问题描述 投票:0回答:1

我正在开发一个 .Net 8.0 应用程序,使用存储库模式和数据库优先方法。

Program.cs文件:

builder.Services.ConfigureRepositoryManager();
builder.Services.ConfigureSqlContext(builder.Configuration);

ServiceExtensions.cs 文件:

public static void ConfigureRepositoryManager(this IServiceCollection services)
{
        services.AddScoped<IRepositoryManager, RepositoryManager>();
}

public static void ConfigureSqlContext(
    this IServiceCollection services,
    IConfiguration configuration
)
{
    var conString = new SqlConnectionStringBuilder(configuration.GetConnectionString("sqlConnection"));
    conString.UserID = Environment.GetEnvironmentVariable("MSSQLServerUser");
    conString.Password = Environment.GetEnvironmentVariable("MSSQLServerPassword");

    services.AddDbContext<RepositoryContext>(options =>
    {
        options.UseSqlServer(conString.ConnectionString);
    });
}

ConfigureSqlContext
方法内的连接字符串会使用用户名和密码进行更新,这意味着
conString.ConnectionString
是完全正确的。但在存储库实例化时,它接收
appsettings.json
文件中定义的连接字符串。

RepositoryManager.cs 文件:

public RepositoryManager(RepositoryContext context)
{
    _context = context;

    _appointment = new Lazy<IAppointmentRepository>(
        () => new AppointmentRepository(_context)
    );
}

在这个类中,_context 有错误的连接字符串。

我试图从连接字符串中排除用户名和密码,无论是在开发中还是在生产中。正如 MS 所建议的,有多种方法,例如用户机密,但我无法使其发挥作用。仅当我在

appsettings.json
文件中的连接字符串中包含用户名和密码时,它才有效。

c# .net .net-core repository-pattern
1个回答
0
投票
        var newConnectionString = conString.ToString();
© www.soinside.com 2019 - 2024. All rights reserved.