Совместное использование AppSettings и ConnectionStrings между консолью и веб-приложением

У меня есть многоуровневое приложение ASP.Net MVC 3, в котором разные уровни должны разделять некоторые настройки, и мне интересно, как лучше всего этого добиться.

На данный момент все мои AppSettings находятся в файле Web.config, но я просто добавил в свое решение новый проект для создания консольного приложения, которое будет вызываться каждую ночь при покупке Планировщика задач Windows для выполнения рутинных задач обслуживания. Это консольное приложение будет использовать ту же базу данных, уровень репозитория, уровень сервиса и т. Д., Что и веб-приложение, и оба приложения должны по большей части использовать одни и те же настройки. Я бы хотел, чтобы настройки не дублировались в двух файлах (app.config и web.config).

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

Я прочитал следующий пост, но не совсем понимаю решение и не уверен, что это лучший способ сделать это.

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

Я также прочитал статью, на которую ссылается этот пост, и не считаю решение очень элегантным.

Я использую VS 2010 и EF 4.3.1.


person Jean-François Beauchamp    schedule 06.11.2012    source источник


Ответы (2)


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

Просто используйте System.Web.Configuration.WebConfigurationManager, чтобы открыть и получить доступ к web.config указанного сайта.

person Nigel Whatling    schedule 06.11.2012

Идея состоит в том, чтобы вы могли поместить настройки в общий .config общий доступ для всех ваших проектов в качестве ссылки, вместо того, чтобы помещать их во все проекты. Решение изложено в this answer. Также проверьте configSource property on MSDN, если вы не осведомлены о возможности вынесения элементов конфигурации в отдельный файл.

person Darin Dimitrov    schedule 06.11.2012