Вместо этого я бы использовал Проекты веб-развертывания и атрибут configSource в web.config
.
Я бы разделил файл web.config на два файла для каждого компонента. Например, для вашего выходного кэша будет разбито на outputcache.dev.config
и outputcache.live.config
. Вы должны ввести источник конфигурации как файл конфигурации dev.
Ваш dev.config в основном сообщит вашему приложению, что вы не хотите выполнять кеширование (enableOutputCache="false"
).
Затем, когда вы запустите свой проект развертывания, у вас могут быть настройки для замены строк dev.config на live.config.
Дополнительные обсуждения проектов configSource и Web Deployment .
Что касается вашей проблемы с CompressFilter ... Ну, я бы просто указал значение настройки приложения в ваших файлах конфигурации. После разделения файлов конфигурации у вас будет appsettings.dev.config
и appsettings.live.config
. В вашем dev у вас будет что-то вроде:
<add key="InLiveMode" value="false" />
И в вашем live.config, да, вы уже догадались:
<add key="InLiveMode" value="true" />
Тогда, когда вы используете атрибут, вы можете просто изменить настройку приложения InLiveMode.
К вашему сведению: я предпочитаю иметь некоторый класс фасад , поэтому я не имею дело с магическими строками в коде, но для простоты у вас будет что-то вроде:
//CompressFilter class
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
bool inLiveMode = bool.Parse(ConfigurationManager.AppSettings["InLiveMode"]);
if(inLiveMode)
{
//Do the compression shiznit
}
}