В случае строк подключения действительно можно указать на общий файл. Если общий файл находится в сети UNC, ему требуются права администратора на машине, на которой будет размещено приложение.
Решение: в вашем web.config используйте configSource, чтобы указать на локальный файл конфигурации. Из-за ограничений .Net он должен быть на уровне корневого файла конфигурации или ниже его. Я просто указываю на файл в самой папке приложения:
<connectionStrings configSource="ConnectionStrings.config" />
В общем расположении, доступном пользователю пула приложений, добавьте файл конфигурации, содержащий общие строки подключения. Этот файл не должен содержать никаких XML, кроме самого раздела connectionStrings. Общий файл ConnectionStrings.config выглядит так:
<connectionStrings>
<clear/>
<add name="connString1" connectionString="connString1 info goes here"/>
<add name="connString2" connectionString="connString2 info goes here"/>
</connectionStrings>
А теперь фокус. Создайте символическую ссылку Windows в папке приложения, указывающую на внешний общий файл конфигурации. Для этого вам потребуются права администратора:
mklink ConnectionStrings.config \\someServer\someShare\someFolder\ConnectionStrings.config
Мы только что перехитрили .Net. Система конфигурации будет использовать параметр configSource для поиска строк подключения в локальном файле с именем ConnectionStrings.config. Символьная ссылка выглядит как файл на .Net, а символьная ссылка ведет к общему файлу конфигурации.
Предостережения: изменения в общем файле не приводят к автоматическому перезапуску приложения в .Net. В случае IIS веб-сайт или пул приложений необходимо будет перезапустить вручную.
Из-за необходимости административных привилегий для создания символической ссылки этот подход может работать не для всех. Есть две связанные альтернативы, которые могут работать, если общий файл находится на одном логическом диске: жесткие ссылки и переходы. См. Это обсуждение и это обсуждение для получения дополнительной информации.