C # .NET удаленное подключение к БД

#c# #.net #database #visual-studio #azure-devops

#c# #.net #База данных #visual-studio #azure-devops

Вопрос:

Итак, у меня есть общий проект Team Services, который я извлек локально. Я подключаюсь к удаленной БД, для которой требуются учетные данные, чтобы что-то с ней делать. Все работает нормально, и мой connectionString заключается в следующем:

 <add name="PluginSchedulerContext"
   connectionString="metadata=res://*/PluginSchedulerDataModel.csdl|res://*/PluginSchedulerDataModel.ssdl|res://*/PluginSchedulerDataModel.msl;provider=System.Data.SqlClient;

     provider connection string=amp;quot;
     data source=xxx.xxx.xxx.xxx;
     initial catalog=TestDB;
     persist security info=True;
     user id=xxx;
     password=xxx;
     MultipleActiveResultSets=True;
     App=EntityFrameworkamp;quot;"

   providerName="System.Data.EntityClient" />
  

Мне было интересно, есть ли более разумный способ сделать это и опустить поле пароля в строке, поскольку app.config , как я вижу, оно не является частью .gitignore . (Я перехожу с Laravel PHP)

Ответ №1:

Лучший способ заключается в том, что вы можете изменить строку подключения для подключения к другой базе данных (тестовой базе данных), затем вы можете заменить строку подключения с помощью задачи Replace Token для подключения к фактической базе данных при развертывании приложения на сервере посредством сборки или выпуска.

Если вы просто хотите использовать базу данных, можете указать connectionstring программно. (Зашифруйте пароль, затем сохраните зашифрованный пароль для вашего приложения, затем расшифруйте пароль и объедините строку подключения с фактическим паролем и укажите его в контексте объекта. Локальная расшифровка может быть в дополнительной сборке.)

 var encryptedPassword="xxx";
var actualPassword=[decrypt password];
var connstring = [combine connectionstring with actual password];
var estringnew = new EntityConnectionStringBuilder(connstring);
estringnew.Metadata = XXX
var context = new BAEntities(estringnew.ToString());
var query =
    from con in context.Contacts
    where con.Addresses.Any((a) => a.City == "Seattle")
    select con;
  

Более подробную информацию вы можете найти в этой статье. Таким образом, разработчики могут отлаживать приложение, чтобы узнать фактический пароль.

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

Ответ №2:

Если вы используете проверку подлинности Windows (доступ к клиенту и базе данных с использованием одного и того же логина Windows), вам не нужны имя пользователя и пароль в исходном коде.

Или вам нужно будет отредактировать конфигурацию при развертывании.

В противном случае учетные данные находятся в конфигурации вашего проекта в вашей VCS.

Комментарии:

1. Аутентификация SQL — это часть, которой нет в моем control…so к сожалению, нет WinAuth. Тогда, я думаю, это невозможно

Ответ №3:

Попробуйте использовать Entity Framework. Это намного проще! https://www.asp.net/entity-framework