C# 如何在ASP.NET Core中使用密码在运行时获取连接字符串
这里我使用appsettings.json文件作为连接字符串。 我在运行时获得了连接字符串,但没有密码 例如:C# 如何在ASP.NET Core中使用密码在运行时获取连接字符串,c#,mysql,asp.net-core,C#,Mysql,Asp.net Core,这里我使用appsettings.json文件作为连接字符串。 我在运行时获得了连接字符串,但没有密码 例如: ((MySql.Data.MySqlClient.MySqlConnection)DataContext.Database.GetDbConnection()).ConnectionString 请帮助在运行时获取密码 提前感谢。您应该尝试从配置中获取连接字符串,而不是从数据库连接中获取连接字符串。例如,如果appsettings.json包含以下内容,则可以通过Configurat
((MySql.Data.MySqlClient.MySqlConnection)DataContext.Database.GetDbConnection()).ConnectionString
请帮助在运行时获取密码
提前感谢。您应该尝试从配置中获取连接字符串,而不是从
数据库连接中获取连接字符串。例如,如果appsettings.json
包含以下内容,则可以通过Configuration.GetConnectionString(“mydb”)
获取连接字符串
也就是说,如果您确实有DbConnection
(或MySqlConnection
)对象,则可以从MySqlConnection.ConnectionString
属性获取密码,前提是以下一项或两项均为真:
- 连接从未打开过
- 原始连接字符串包含
PersistSecurityInfo=true代码>。(有关这方面的更多信息,请参阅中的文档。)
如果您能够修改应用程序正在使用的原始连接字符串,则可以添加PersistSecurityInfo=true
标志。否则,您将需要获取未打开的数据库连接才能检索完整的连接字符串,包括密码。出于安全原因,这是出于设计考虑。发件人:
ConnectionString类似于OLE DB连接字符串,但不同。与OLE DB或ADO不同,返回的连接字符串与用户设置的ConnectionString相同,如果Persist security Info值设置为false(默认),则减去安全信息。SQL Server的.NET Framework数据提供程序不会持久化或在连接字符串中返回密码,除非将“持久化安全信息”设置为true
因此,尝试添加persistencesecurityinfo=true连接字符串中的code>。为什么需要密码?您试图实现什么?您是否尝试跳过DataContext并仅从配置中检索它。ConnectionString
?我想同时处理多个服务器数据库。这就是我在运行时获得密码的原因。在这里,我使用了这种类型的类。从不同的服务器获取记录。示例:公共静态数据表GetDataTable(System.Data.CommandType CommandType,string commandText,string Connectionstring){System.Data.DataTable dt=new DataTable();MySql.Data.MySqlClient.MySqlDataAdapter da=new MySqlDataAdapter(commandText,Connectionstring);da.Fill(dt);return dt;}您应该在这里执行的操作是遵循选项模式:
{
"ConnectionStrings": {
"mydb": "server=DBSERVER;user=myuser;password=pwd;database=DB"
}
}