Любой раздел конфигурации - например, <smtp>
- может быть «внешним», например хранится во внешнем файле.
Кроме оператора file=
в <appSettings>
(который доступен только для настроек приложения :-(), это не «дополнительный» параметр - вы просто указываете свою конфигурационную систему на внешний файл.
Так что вы можете иметь это в вашем app.config / web.config:
<system.net>
<mailSettings>
<smtp configSource="smtp.test.config" />
</mailSettings>
</system.net>
и это в вашем smtp.test.config
:
<?xml version="1.0" encoding="utf-8" ?>
<smtp>
<network host="smtp.test.com" port="244" userName="test" password="secret" />
<specifiedPickupDirectory pickupDirectoryLocation="C:\temp\mails"/>
</smtp>
Это работает с .NET 2.0 (может быть, даже 1.x) и работает для каждой конфигурации раздел - но не для конфигурации группы разделов как <system.web>
.
Конечно, теперь вы можете создавать дополнительные конфигурационные файлы, такие как smtp.staging.config
и т. Д., И теперь ваша проблема сводится к замене одной строки в вашем файле web.config.
Это можно сделать с помощью сценария установки, препроцессора XML или даже с помощью человека.
Это не полностью решает проблему, как .NET 4 и преобразования web.config , будем надеяться, но это шаг и небольшая помощь.