如何在运行时使用ASP.NET Core中的密码获取连接字符串

时间:2019-07-02 13:33:32

标签: c# mysql asp.net-core

在这里,我使用appsettings.json文件作为连接字符串。 我在运行时得到的连接字符串没有密码。

示例:

((MySql.Data.MySqlClient.MySqlConnection)DataContext.Database.GetDbConnection()).ConnectionString

请帮助在运行时获取密码。

谢谢。

2 个答案:

答案 0 :(得分:1)

您应该尝试从配置而不是从DbConnection获取连接字符串。例如,如果appsettings.json包含以下内容,则可以通过Configuration.GetConnectionString("mydb")获取连接字符串。

{
  "ConnectionStrings": {
    "mydb": "server=DBSERVER;user=myuser;password=pwd;database=DB"
  }
}

也就是说,如果您确实有一个DbConnection(或MySqlConnection)对象,那么如果以下一项或两项为真,则可以从MySqlConnection.ConnectionString属性获取密码:< / p>

如果您能够修改应用程序使用的原始连接字符串,则可以添加PersistSecurityInfo=true标志。否则,您将需要获得未打开的数据库连接才能检索完整的连接字符串,包括密码。

答案 1 :(得分:1)

出于安全原因,这是设计使然。来自MSDN

  

ConnectionString与OLE DB连接字符串相似,但不相同。与OLE DB或ADO不同,返回的连接字符串与用户设置的ConnectionString相同,如果Persist Security Info值设置为false(默认值),则减去安全信息。除非将Persist Security Info设置为true,否则SQL Server的.NET Framework数据提供程序将不会保留或在连接字符串中返回密码。

因此,尝试在连接字符串中添加Persist Security Info=true;