web.config с app.config в .dll - PullRequest
       3

web.config с app.config в .dll

3 голосов
/ 25 января 2012

Я только что унаследовал очень старое веб-приложение ASP.NET 2.0.

В приложении есть НЕСКОЛЬКО проектов поддержки классов.В библиотеке классов DataAccess есть файл app.config (и файл setting.settings) со строкой подключения с именем ConnString1.

Я всегда думал, что .DLL не может иметь app.config / setting.settingsфайл (или, по крайней мере, вы можете включить их, но они не будут использоваться), поэтому меня это смущает.

В файле web.config также есть строка подключения с именем ConnString1 с теми же учетными данными для входа на сервер, но другое имя сервера.

Когда я запускаю приложение из Visual Studio DEBUG, оно использует строку подключения, которая находится в файле app.config / settings, а не ту, которая определена в файле web.config./machine.config.

Я думал, что .DLLs этого не сделают, но вместо этого используют web.config?

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

Может кто-нибудь объяснить это?

Ответы [ 4 ]

2 голосов
/ 25 января 2012

Я обнаружил проблему:

В приведенном выше примере я использую web.config / machine.config для установки строки подключения для приложения.

Если строка подключения отсутствуетНе определено в файле web.config, по умолчанию используется machine.config.Если строка подключения не определена в machine.config, она будет использовать настройку app.config, найденную в .dll.

Важно отметить, что размещение строки подключения в machine.config,это должно быть определено в правильной Framework / CONFIG.

На моей машине для разработки строка подключения была определена не в web.config, а в environment.config, но в Framework64 / CONFIG - однакоприложение скомпилировано в 32-разрядной версии, поэтому существует причина использования Framework / CONFIG, для которой не определена строка подключения, и использование по умолчанию файла app.config в библиотеке классов.

Я надеюсь, что это объясняет?

2 голосов
/ 25 января 2012

Должно быть что-то, что сбивает вас с толку, когда вы думаете, что используется файл конфигурации, который является частью этой DLL - в отличие от файла конфигурации приложений (точки входа) (yourapp.exe.config или web.config) , Возможно, эта строка conn где-то жестко запрограммирована для использования в режиме отладки, например, используя условную компиляцию через директиву препроцессора "#if DEBUG" (поэтому, возможно, поищите "#if DEBUG" в вашем решении, чтобы увидеть, происходит ли эта конкретная вещь).

MSDN статья о настройках приложения

См. Желтую «Примечание» в разделе «Создание параметров приложения во время разработки»: «Поскольку модель файла конфигурации отсутствует для библиотек классов, параметры приложения не применяются для проектов библиотеки классов».

1 голос
/ 25 января 2012

Все параметры конфигурации должны быть указаны в исполняемом файле конфигурации.Для Windows и консольных приложений это app.config, для веб-проектов - web.config.

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

0 голосов
/ 10 сентября 2018

Разница между Web.config, AppSettings.json и App.config

Web.config:

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

AppSetting.json:

Для всего остального, что не касается IIS, вы используете AppSetting.json.AppSetting.json используется для хостинга Asp.Net Core.ASP.NET Core использует переменную среды «ASPNETCORE_ENVIRONMENT» для определения текущей среды.По умолчанию, если вы запускаете свое приложение без установки этого значения, оно автоматически будет по умолчанию настроено на рабочую среду и использует файл «AppSetting.production.json».Когда вы отлаживаете через Visual Studio, он устанавливает среду разработки, поэтому он использует «AppSetting.json».Посетите этот веб-сайт, чтобы понять, как установить переменную среды хостинга в Windows.

App.config:

App.config - это еще один файл конфигурации, используемый .NET, который в основном используется для Windows Forms,Службы Windows, консольные приложения и приложения WPF.При запуске хостинга Asp.Net Core через консольное приложение также используется app.config.


Сводка

Выбор файла конфигурации определяется выбранной средой хостинга.сервис.Если вы используете IIS для размещения своей службы, используйте файл Web.config.Если вы используете любую другую среду размещения, используйте файл App.config.См. Настройка служб с использованием файлов конфигурации, документация , а также проверка Конфигурация в ASP.NET Core.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...