Совет. Этот пример отражает совокупную конфигурацию в корневом каталоге Web-приложения, поскольку в нем используется Request.ApplicationPath при вызове метода OpenWebConfiguration(). Если бы вместо него, вы воспользовались Request.CurrentExecutionFilePath, то получили бы совокупные параметры настройки для текущего каталога. Если текущим каталогом является подкаталог внутри Web-приложения, и если этот подкаталог имеет свой собственный файл web.config, вы увидите его дополнительные параметры настройки.
Обратите внимание на то, что файл web.config никогда не является хорошим решением для управления состоянием. Наоборот, его разумнее всего использовать для того, чтобы периодически обновлять параметр настройки, который при обычных обстоятельствах практически никогда не изменяется. Это объясняется тем, что изменение параметра настройки конфигурации связано, со значительными затратами. Доступ к файлу никогда, не отличался стремительной скоростью, а требуемая синхронизация добавляет свои издержки. Однако реальная проблема заключается в высокой стоимости создания нового домена приложения (что происходит всякий раз, когда изменяются параметры настройки конфигурации). В следующий раз, когда вы будете запрашивать страницу, вы увидите этот эффект — запрос будет выполнен гораздо медленнее при компилировании страницы в родной для машины код, кэшировании и загрузке. Более того, будет утрачена информация в коллекциях Application и Caching, а также любая информация в коллекций Session, если вы используете внутрипроцессный сервер сеанса (подробно об этом будет рассказано в главе 6). К сожалению, новая модель конфигурации вообще очень легко приводит к серьезной ошибке хранения часто изменяемых значений в конфигурационном файле.
По умолчанию метод Configuration.Save() сохраняет только те изменений, которые вы произвели с момента создания объекта Configuration. Параметры настройки хранятся или в локальном файле web.config, или в файле, создаваемом по мере необходимости. Важно понять, что если вы измените унаследованный параметр настройки (например, параметр, который хранится в файле machine.config), то при сохранении изменений вы не перезапишете существующее значение в конфигурационном файле, в котором оно определено. Новое значение будет сохранено в локальном файле web.config, так что оно подменит унаследованное значение только для текущего приложения. Вы можете также использовать Метод SaveAs(), чтобы сохранить параметры настройки в другом файле.
При вызове метода Configuration.Save() вы можете использовать перегруженную версию метода, который принимает значение из перечисления ConfigurationSaveMode. Чтобы сохранить любое измененное вами значение, используйте Modified даже если оно не отличается от унаследованных значений. Чтобы сохранить все в локальном файле web.config, используйте Full, что будет полезно, если вы пытаетесь продублировать параметры настройки конфигурации для проверки или развертывания. Наконец, используйте Minimal, чтобы сохранить только те изменения, которые отличаются от унаследованных уровней — это используется по умолчанию.
предыдущая следующая страница оглавление
227