Хранение настроек базы данных вне app.config - PullRequest
0 голосов
/ 29 декабря 2010

Я писал c # exe, который будет работать на живом веб-сервере, но я хочу иметь возможность протестировать его на нашем промежуточном сервере. Поскольку промежуточный сервер имеет настройки базы данных (в app.config), отличные от моего локального хоста, есть ли способ сохранить строку подключения вне app.config, чтобы я мог легко получить к ней доступ?

Кроме того, возможно ли сохранить строку подключения к базе данных, а затем обратиться к ней через app.config? Это может показаться странным, но я использую DLL из CMS, которая использует значение в файле .config.

Ответы [ 6 ]

4 голосов
/ 29 декабря 2010

Как насчет использования разных app.config в каждом месте?

2 голосов
/ 29 декабря 2010

Вы можете «экстернализовать» любой раздел конфигурации .NET в отдельный файл и ссылаться на него из app.config.

Так что в вашем случае у вас будет что-то подобное в app.config:

<connectionStrings configSource="connectionstrings.dev.config" />

, а затем создайте отдельные конфиги, например, для сред DEV, TEST, PROD с разными именами.Их содержание будет:

<?xml version="1.0"?>
<connectionStrings>
   -- your connection string here, as normal
</connectionStrings>

Вы можете использовать любое количество этих отдельных файлов, и переключение означает только изменение одной строки в вашем основном app.config для ссылки на соответствующий внешний файл connectionstrings.ABC.config.

1 голос
/ 29 декабря 2010

Вместо этого, как насчет создания настроек базы данных в app.config с префиксами, такими как DevConnectionString и ProdConnectionString.Затем создайте еще один элемент app.config, который сообщает вам, в какой среде вы находитесь.

Во время разработки этот параметр среды имеет значение "Dev".При развертывании кода измените элемент среды в app.config на «Prod».

Когда вы хотите получить параметры базы данных в коде, сначала изучите значение среды, а затем выберите соответствующие параметры базы данных.

Один из вариантов этой темы - создать переменную среды в Windows на каждом компьютере и запросить ее в своем коде.

0 голосов
/ 29 декабря 2010

Вы можете свернуть свой собственный конфигурационный файл для строк подключения, вызвать его в соответствии с текущей средой, например, dev.config, qa.config, prod.config и т. Д., И сохранить его имя в App.config.

Кроме того, вы можете добавить запись в Machine.config, например, с именем Environment, и рассмотреть ее при чтении App.config для определения конфигурации среды, например:

Machine.config:

<environment name="Dev" />

App.config:

<environments>
    <environment name="Dev" config="dev.config" />
    <environment name="QA" config="qa.config" />
    ...
</environments>
0 голосов
/ 29 декабря 2010

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

Файл app.config легко получить.Это просто текстовый файл в формате XML, поэтому вы можете редактировать его с помощью любого текстового редактора, например, Блокнота.Хотя он не называется app.config после развертывания, он получает имя файла от имени приложения с расширением .config.

0 голосов
/ 29 декабря 2010

Вы можете сохранить его в любом месте: в текстовом файле в переменной среды передайте его в качестве аргумента командной строки.

Вам просто нужно написать код, чтобы прочитать строку подключения и передать ее в свой доступ к данным.

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

Но, возможно, лучше использовать разные конфигурационные файлы для каждой среды.

...