2015-02-26 8 views
0

Я создал сервер api, который состоит из трех проектов: Api (проект api), который вызывает BL (библиотека классов), которая вызывает Dal (библиотека классов). Очень стандартный. Он отлично работает на месте. Теперь, когда я публикую его, приложение app.config BL исчезает. Почему? Где я могу сохранить свои настраиваемые параметры? спасибо. TalГде мой файл app.config?

+0

В MVC вы должны использовать 'web.config' для настраиваемых параметров – Satpal

+0

настраиваемых параметров? Вы имели в виду 'appsettings'? Вы не можете получить appsetting из библиотеки BL и Dal в своем проекте mvc. –

ответ

1

В своем основном проекте ASP.NET используйте Web.Config вместо App.Config, чтобы заставить его работать.

0

app.config только имя в процессе разработки, как только проект будет построен app.config копируется в .config и это то, что используется приложением при запуске

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

Если это библиотека (.dll), тогда вы должны поместить свою конфигурацию в файл web.config (если библиотека используется asp.net) или в .config, если это стандартный исполняемый файл.

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

Как потребитель вашей библиотеки узнает, что им нужно добавить SettingX в настройки своего конфигурационного файла? Лучше для библиотеки напрямую запрашивать значение настройки. Поэтому, если ваш DAL нуждается в строке соединения, тогда класс, который хочет строку соединения, должен запросить его в своем конструкторе. Затем приложение, использующее его, может получить его из настроек (или в любом случае) и передать их в библиотеку., И у потребителей есть видимость зависимости от строки подключения. Если библиотека читает его из конфигурации, у потребителя нет способа узнать, что это то, что им нужно добавить к настройкам

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

+0

Я вижу, что я не добираюсь до тебя. Проблема в том, что в моей библиотеке классов BL я использую appSetting, чтобы сделать этот параметр настраиваемым. теперь я публикую всю серверную часть, которая является моей частью проекта. BL использует параметры, которые я вставил в Appsettings, но я не могу найти, где их изменить, если это необходимо, и это было в основном при использовании настройки приложения, например, когда я программирую материал, который не является веб-api. – tal

+1

@tal Я понимаю вашу проблему, но, похоже, вы не понимаете, как работает конфигурация в .net. Файл app.config ** никогда не читается ** ничем. Это всего лишь файл времени разработки. Файл, используемый для чтения настроек, основан на имени исполняемой программы по умолчанию (или web.config для программы asp.net), поэтому, если вы не меняете файл конфигурации для использования в коде библиотеки, он будет ищите свои настройки в файле web.config. Я предлагаю вам прочитать, как работает конфиг, а затем перечитать мой ответ, чтобы узнать, имеет ли он смысл. –

+0

Спасибо, я сделаю это. На самом деле я знаю, что это просто то, что я привык к Dll.Config файлы были созданы, и я не мог понять, что заменяет его на веб-проекте. Я получаю это сейчас. Еще раз спасибо, – tal

Смежные вопросы