Указание строки подключения в файле конфигурации для библиотеки классов и повторное использование/изменение в веб-приложении ASP.NET

Как можно указать строку подключения в файле конфигурации библиотеки классов, а затем изменить ее при использовании в веб-приложении ASP.NET?

Библиотека классов — это уровень доступа к данным, в котором набор данных подключается к базе данных на основе строки подключения, указанной в файле конфигурации (Settings.settings/app.config).

Эта библиотека классов используется в веб-приложении, где пользователь вводит данные и записывает их в базу данных, используя классы и методы DAL, представленные в библиотеке классов.

Теперь я хочу перенести это приложение из среды разработки в среду тестирования, а затем в рабочую среду. Проблема, с которой я столкнулся, заключается в том, что после перехода на тестирование тестируемое приложение по-прежнему подключается к базе данных разработки. Я изменил строку подключения, указанную в файле ‹class library›.dll.config, но, похоже, это не повлияло.

Может ли кто-нибудь объяснить правильный способ добиться этого? Заранее благодарю за любую помощь. Ваше здоровье.


person Nahom Tijnam    schedule 22.01.2009    source источник


Ответы (2)


В файлах .config имя должно соответствовать основной исполняемой сборке. Например, у меня была такая же ситуация, как у вас, мне нужна была библиотека классов, чтобы ее настройки были в файле .dll.config. Несмотря на то, что оно могло сослаться на него, фактическое приложение не могло прочитать файл конфигурации, поскольку оно ожидало .exe.config. Переименование .dll.config в .exe.config устранило проблему.

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

Удачи!

person Joshua    schedule 22.01.2009

Джошуа отчасти прав ... Для потомков я хотел бы добавить немного больше к этому ответу, поскольку я несколько раз сталкивался с одними и теми же проблемами. Во-первых, нужно рассмотреть их архитектуру. Существует несколько проблем, с которыми вы можете столкнуться с файлами .config в ASP.NET в зависимости от развертывания.

Учитывая архитектурные разветвления:

Один уровень (один сервер): простое веб-приложение может использовать ссылку на файл Web.config сайтов и решать ваши проблемы. Это было бы прекрасным решением для одноуровневого приложения. В случае приложения Windows, используемого в виде файла .exe, App.config также будет работать.

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

Многоуровневость (более одного сервера). Вот тут-то мне и стало немного не по себе, когда я впервые работал с файлами .config за пределами границ. Помните об иерархии структуры конфигурации и помните об этом (Статья MSDN о структуре .Config) — в корневом каталоге соответствующей папки ASP.NET находится файл machine.config. Они находятся на каждом физическом сервере. Они переопределяются сайтом Web.config (или App.config), который, в свою очередь, переопределяется файлами .config вложенных папок. Если у вас есть более одного файла .config, вы можете использовать один из методов для передачи пути к файлу для конкретного .config, который вы хотите использовать. Что еще более важно, каждый из этих файлов может содержать информацию о соединении. Machine.config ASP.NET содержит некоторые данные для фреймворка... так что вы должны, по крайней мере, учитывать тот факт, что это цепочка "наследования". Во-вторых, любые изменения в файле Web.config после развертывания потребуют перезапуска приложения. Это приведет к потере состояния (плохо, если у вас есть активные пользователи на сайте). Обойти это можно, сохранив отдельный файл .config (например, connection.config) и поместив ссылку на этот файл в файл Web.config. Это позволит вам изменить информацию о подключении (например, пароль) без перезапуска приложения. Вот ссылка на дополнительную информацию: MSDN: работает с файлами конфигурации. В этой статье изложены все детали, о которых вам необходимо знать в обычном приложении, развернутом на сервере или в IIS. Имейте в виду, что файлы .config в основном предназначены для приложений, а не для библиотек. Если у вас несколько уровней, скорее всего, вы используете какой-то уровень связи/обмена сообщениями (например, WCF). Это будет иметь/разрешить собственный Web.config. Вы можете хранить там строки подключения (и шифровать их при необходимости), но еще лучше поместить их во второй файл, на который ссылается Web.config, для удобства управления. И последний момент: если вы когда-либо собираетесь рассматривать облако, файлы .config завернуты для развертывания приложений, что фактически лишает их всех преимуществ, которые они предлагают с точки зрения «отсутствия перезапуска или повторного развертывания». Развертывания Azure захотят рассмотреть эту статью, чтобы избавить себя от кошмаров обслуживания: Блог Билла Лодина — Файлы конфигурации в Azul / Cloud. Еще один момент в этой статье — отличный пример того, как программно выбрать конфигурацию в зависимости от развертывания! Обязательно ознакомьтесь с этим, если вы хотите повысить гибкость развертывания в облаке или за его пределами.

person Zack Jannsen    schedule 16.11.2012