Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET Core中使用密码在运行时获取连接字符串_C#_Mysql_Asp.net Core - Fatal编程技术网

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

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

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

例如:

((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

为什么需要密码?您试图实现什么?您是否尝试跳过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"
  }
}