Переопределить machine.config с помощью web.config

Я учусь работать со встроенным поставщиком профилей.Net, и у меня возникла следующая проблема:

Я прочитал, что параметры machine.config могут быть переопределены параметрами web.config.Net-приложения. Следующие настройки в файле machine.config актуальны для меня:

<connectionStrings>
<add name="LocalSqlServer" connectionString="Data Source=(local);Initial Catalog=aspnetdb;
Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>

<profile><providers><add name="AspNetSqlProfileProvider"connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/></providers></profile>

Эти настройки работают для настройки локальных профилей. Однако, когда я копирую настройки в web.config своего приложения и изменяю настройки machine.config, чтобы они больше не работали, я получаю ошибку конфигурации. Например, я меняю имя провайдера в machine.config на "Локальный". Это не должно быть проблемой, потому что настройки переопределены. Однако при запуске приложения я получаю сообщение об ошибке:

"Запись"AspNetSQLProvider уже добавлена ​​" (мой перевод)

1 ответ

Решение

Добавить <clear /> элемент как первый ребенок <connectionStrings>, Это заставит систему конфигурации игнорировать все строки подключения, добавленные в machine.config и использовать новые предоставленные. Вы также можете использовать <remove> элемент для удаления одного элемента конфигурации, если вы не хотите очистить все это.

<connectionStrings>
   <clear />
   <add name="LocalSqlServer" connectionString="Data Source=(local);Initial Catalog=aspnetdb;Integrated Security=True" providerName="System.Data.SqlClient"/> 
</connectionStrings>

Та же идея относится и к <providers> разделы также.

Другие вопросы по тегам