更改连接字符串后,ASP.NET Core重新注册dbcontext

时间:2019-01-10 08:08:28

标签: c# asp.net-core dbcontext

我有一个ASP.NET Core应用程序,该应用程序在配置文件中具有连接字符串键。

如果其值不正确(例如,数据库名称,IP地址等),那么我希望能够在用户在配置文件中手动更改它之后,使用新的连接字符串重新注册该dbcontext服务。

如何实现?这被认为是不好的做法吗?

谢谢。

2 个答案:

答案 0 :(得分:4)

我看到您正在使用asp.net核心。

理想情况下,您不应该在应用程序运行时更改连接字符串,因为它可能会导致您的Web应用程序重置(取决于启动配置和Web服务器)。

为回答您的问题,您可以在应用程序运行时更改配置。 ReloadOnChange参数对您很有用。

以下代码在appsettings.json配置文件中发生更改时将reloadOnChange设置为true。

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
        })
        .UseStartup<Startup>();

参考:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2

答案 1 :(得分:0)

使用.NET Core,您需要正确配置Startup OWIN应用程序,以便它自动重新加载设置文件。

在注册appsettings.json文件的启动类中,您需要告诉它更改后应重新加载。您将其作为参数传递。例如

    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json", reloadOnChange: true)
        Configuration = builder.Build();
    }

按照上述代码尝试尝试

在上面详细说明。

理想情况下,应通过诸如Octopus之类的部署工具来管理此类更改设置文件。这样,您可以在工具上定义变量,这些变量将在部署时用于替换应用程序设置。 :)