При каких условиях мы будем использовать <remove>перед каждым <add>в web.config - PullRequest
0 голосов
/ 11 сентября 2018

Я искал в web.config какой-то устаревший код, где в большинстве разделов групп перед добавлением каждого <add...> a <remove...>, например:

<connectionStrings>
    <remove name="abcDb" />
    <add name="abcDb" connectionString="..." providerName="System.Data.SqlClient" />

</connectionStrings>

Если раздел был добавлен в файл конфигурации машины по какой-то странной причине, разве недостаточно просто снова добавить этот же раздел, и это будет перезаписано?

Если я не пропустил трюк, почему бы нам <remove>, а затем <add>, а не просто <add>

Ответы [ 2 ]

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

Если вы <add ... элемент, который уже был добавлен в файл конфигурации более высокого уровня, он не допускается (если значение не совпадает точно).

Когда вы пытаетесь получить доступ к строке подключения (или иным образомвызвать загрузку этого раздела конфигурации), вы получите ошибку:

Запись 'LocalSqlServer' уже добавлена.

Line 12:   </appSettings>
Line 13:  <connectionStrings>
Line 14:      <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|fruitbat.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
Line 15:  </connectionStrings>
Line 16:   <system.web>

Так вот почемуВы должны <remove ... (или, по моему предпочтению, просто <clear/>), прежде чем добавлять свои собственные значения, которые могли быть настроены в другом месте.


(Здесь я добавил LocalSqlServer строку подключения кмой web.config, несмотря на то, что такое соединение уже настроено в machine.config по умолчанию в более поздних фреймворках)

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

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

https://webconfigtransformationtester.apphb.com/

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

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