Хранение строки подключения в базе данных - PullRequest
4 голосов
/ 26 августа 2010

Я не смог найти вопрос, который бы подходил для этой цели, поэтому я задаю его.

Мы развернули веб-сайт ASP.NET, который имеет две строки подключения, одну из которых можно настроить с помощьюпользователь, во время выполнения.Проблема в том, что, поскольку я использую .NET Framework для этого, он создает временный файл ко времени изменения файла web.config, что вынуждает моего клиента предоставлять полные права на всю папку веб-сайта, а не только на веб-страницу.Конфигурационный файлОн не доволен этим, и менеджеры задаются вопросом о сохранении другой строки подключения в том же файле конфигурации.

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

Как насчет хранения ConnectionString в базе данных?

Обратите внимание, что я неговорить о приложении ConnectionString, но в качестве альтернативы, поскольку это приложение будет интегрироваться как три приложения.

Итак, ребята, дайте мне преимущества и недостатки, хорошие и плохие моменты хранения его в базе данных.

Ответы [ 4 ]

8 голосов
/ 26 августа 2010

Если пользователь использует приложение, которое имеет свою собственную базу данных, для подключения ко 2-й базе данных по своему выбору и должен иметь возможность изменить это во время выполнения, тогда да, сохраните его в базе данных. Это своего рода хостинговое приложение самообслуживания?

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

5 голосов
/ 26 августа 2010

Я не буду хранить строки подключения в базе данных.

Вместо этого я бы использовал Файл настроек (файлы настроек можно изменять во время выполнения, не вызывая перекомпиляцию приложения, например web.config).

Вы также можете задавать различные настройки для разных областей («Пользователь», «Приложение» и т. Д.), Чтобы каждый пользователь мог сохранять свою конфигурацию, если хотите, не наступая ни на чьи пальцы.

2 голосов
/ 26 августа 2010

Сохраните его в БД

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

Преимущества

  1. Не хранятся там, где общественность может их получить - хотя фильтр ISAPI для ASP.net выигралне позволяйте доступ к нему нормально, но вы никогда не знаете, какой эксплойт будет всплывать в следующем
  2. Легко связать его с другими данными вашего пользователя - поскольку он связан с пользователями вашего сайта, это полезно
  3. Нет проблем безопасности - нет необходимости устанавливать какие-либо специальные разрешения в любом месте
0 голосов
/ 26 августа 2010

Вы можете использовать что-то подобное в вашем web.config

<add name="ConnectionString" connectionString="Data Source={0};Initial Catalog={1};User ID={2};Password={3}" providerName="System.Data.SqlClient" />

И затем использовать string.Format () для установки различных значений каждого параметра.

...