从代码中将凭据添加到连接字符串
Add credentials to connection string from code
我有一个使用用户名和密码的连接字符串。但是,凭据存储为环境变量(我正在使用 OpenShift),因此我想在运行时从代码中添加凭据(用户名和密码)。
虽然我可能可以使用 reg-ex 或其他一些创造性的想法来实现这一点,但它似乎是 C# 默认支持的东西。我找到了 this answer in another post, suggesting to use an EntityConnectionStringBuilder
,但这仅适用于 .NET Framework(我使用的是 .NET Core 3.1)。 .NET Core 是否有类似的东西(或者甚至更智能)?
此外,我正在使用 Entity Framework 核心,因此任何修改连接本身而不是连接字符串的东西都不是真正的选择。
如果您有权访问配置文件,类似这样的方法可能会起作用
<connectionStrings>
<add name="Connection" connectionString="Url=https://smth.com; Username=Username; Password=Password" />
</connectionStrings>
你只需要访问连接名称
正如@CodeCaster 在评论中提到的那样——答案是 SqlConnectionStringBuilder。它允许向现有连接字符串添加部分,例如 User ID
。因此,要将用户名和密码添加到 appsettings.json
中的连接字符串,您可以这样做:
string baseConnStr = Configuration.GetConnectionString("MyConnectionString");
var builder = new SqlConnectionStringBuilder(baseConnStr);
builder.UserID = "Test";
builder.Password = "Abc123";
var connStr = builder.ConnectionString
我有一个使用用户名和密码的连接字符串。但是,凭据存储为环境变量(我正在使用 OpenShift),因此我想在运行时从代码中添加凭据(用户名和密码)。
虽然我可能可以使用 reg-ex 或其他一些创造性的想法来实现这一点,但它似乎是 C# 默认支持的东西。我找到了 this answer in another post, suggesting to use an EntityConnectionStringBuilder
,但这仅适用于 .NET Framework(我使用的是 .NET Core 3.1)。 .NET Core 是否有类似的东西(或者甚至更智能)?
此外,我正在使用 Entity Framework 核心,因此任何修改连接本身而不是连接字符串的东西都不是真正的选择。
如果您有权访问配置文件,类似这样的方法可能会起作用
<connectionStrings>
<add name="Connection" connectionString="Url=https://smth.com; Username=Username; Password=Password" />
</connectionStrings>
你只需要访问连接名称
正如@CodeCaster 在评论中提到的那样——答案是 SqlConnectionStringBuilder。它允许向现有连接字符串添加部分,例如 User ID
。因此,要将用户名和密码添加到 appsettings.json
中的连接字符串,您可以这样做:
string baseConnStr = Configuration.GetConnectionString("MyConnectionString");
var builder = new SqlConnectionStringBuilder(baseConnStr);
builder.UserID = "Test";
builder.Password = "Abc123";
var connStr = builder.ConnectionString