Ссылка на файл Web.Config из другого проекта в том же решении C # - PullRequest
13 голосов
/ 07 апреля 2011

У меня есть решение VC2010 C # с несколькими проектами.

Так, например, у меня есть веб-проект, и у меня есть библиотека классов.

В файле web.config у меня есть ключ в разделе <appSettings>, например,

<add key="FileDirectory" value="G:\ftproot\sales" />

Я также добавил ключ в файл Web.Production.config, чтобы отразить каталог файлов на сервере.

Поэтому, когда я ссылаюсь на это в своем веб-проекте (это MVC), я делаю это так:

var FTPPath = ConfigurationManager.AppSettings["FileDirectory"];

это прекрасно работает в моем веб-проекте.Тем не менее, мне также нужно сослаться на это в библиотеке классов, что приводит к моему вопросу - есть ли способ ссылаться на ключ в файле web.config из другого проекта, например, библиотеки классов, в том же решении ??

Вся помощь приветствуется.Спасибо

Ответы [ 2 ]

16 голосов
/ 07 апреля 2011

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

3 голосов
/ 07 апреля 2011
Библиотеки классов

не имеют собственной конфигурации. Они используют конфигурацию, в которой когда-либо выполняются они используются.

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

Это не всегда удобно (например, если вы пишете плагин на основе .net для оснастки MMC, так как это означает, что вам нужно изменить mmc.exe.config в системной папке.)

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

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

...