ASP.NET 核心在更改连接字符串后重新注册 dbcontext
ASP.NET Core re-registering dbcontext after changing connection string
我有一个 ASP.NET 核心应用程序,它在配置文件中有一个连接字符串键。
如果它的值不正确(例如数据库名称、IP 地址等),我希望能够在用户在配置中手动更改后使用新的连接字符串重新注册此 dbcontext 服务文件。
如何实现?这被认为是一种不好的做法吗?
谢谢。
我看到您正在使用 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
使用 .NET Core,您需要正确配置启动 OWIN 应用,以便它自动重新加载您的设置文件。
在注册 appsettings.json 文件的启动 class 中,您需要告诉它应该在更改时重新加载。您将其作为参数传递。例如
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", reloadOnChange: true)
Configuration = builder.Build();
}
按照上面的代码尝试一些东西
详细说明以上内容。
像这样更改设置文件最好通过 Octopus 等部署工具进行管理。通过这种方式,您可以在工具上定义变量,这些变量将用于在部署时替换应用程序设置。 :)
我有一个 ASP.NET 核心应用程序,它在配置文件中有一个连接字符串键。
如果它的值不正确(例如数据库名称、IP 地址等),我希望能够在用户在配置中手动更改后使用新的连接字符串重新注册此 dbcontext 服务文件。
如何实现?这被认为是一种不好的做法吗?
谢谢。
我看到您正在使用 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
使用 .NET Core,您需要正确配置启动 OWIN 应用,以便它自动重新加载您的设置文件。
在注册 appsettings.json 文件的启动 class 中,您需要告诉它应该在更改时重新加载。您将其作为参数传递。例如
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", reloadOnChange: true)
Configuration = builder.Build();
}
按照上面的代码尝试一些东西
详细说明以上内容。
像这样更改设置文件最好通过 Octopus 等部署工具进行管理。通过这种方式,您可以在工具上定义变量,这些变量将用于在部署时替换应用程序设置。 :)