Как получить строку подключения во время выполнения с паролем в ASP.NET Core - PullRequest
0 голосов
/ 02 июля 2019

Здесь я использую файл appsettings.json для строки подключения.Я получил строку подключения во время выполнения без пароля.

Пример:

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

Пожалуйста, помогите получить пароль во время выполнения.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 03 июля 2019

Это сделано по соображениям безопасности. От MSDN :

ConnectionString похожа на строку подключения OLE DB, но не идентична. В отличие от OLE DB или ADO, возвращаемая строка подключения совпадает с заданной пользователем ConnectionString, за исключением информации о безопасности, если для параметра Persist Security Info установлено значение false (по умолчанию). Поставщик данных .NET Framework для SQL Server не сохраняет данные и не возвращает пароль в строке подключения, если для параметра «Сведения о безопасности» не задано значение true.

Итак, попробуйте добавить Persist Security Info=true; в строку подключения.

1 голос
/ 02 июля 2019

Вы должны попытаться получить строку подключения из конфигурации, а не из DbConnection.Например, если appsettings.json содержит следующее, вы можете получить строку подключения через Configuration.GetConnectionString("mydb").

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

Тем не менее, если у вас есть объект DbConnection (или MySqlConnection),Вы можете получить пароль из свойства MySqlConnection.ConnectionString, если верно одно или оба из следующих условий:

  • Соединение никогда не было открыто.
  • Исходная строка соединения содержит PersistSecurityInfo=true;.(Для получения дополнительной информации см. Документацию по адресу https://mysqlconnector.net/connection-options/.)

Если вы можете изменить исходную строку подключения, используемую вашим приложением, вы можете добавить флаг PersistSecurityInfo=true. В противном случае,вам нужно будет получить неоткрытое соединение с базой данных, чтобы получить полную строку соединения, включая пароль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...