在这里,我使用appsettings.json文件作为连接字符串。 我在运行时得到的连接字符串没有密码。
示例:
((MySql.Data.MySqlClient.MySqlConnection)DataContext.Database.GetDbConnection()).ConnectionString
请帮助在运行时获取密码。
谢谢。
答案 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;
。 (有关更多信息,请参阅https://mysqlconnector.net/connection-options/上的文档。)如果您能够修改应用程序使用的原始连接字符串,则可以添加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;
。