Как изменить настройки HttpRuntime (например, WaitChangeNotification) во время выполнения? - PullRequest
2 голосов
/ 11 мая 2011

Настроить параметры в файле web.config легко, введя их в файл xml.Однако я хотел бы установить некоторые параметры во время выполнения.

В частности, я хочу установить параметр system.web / httpRuntime / WaitChangeNotification.

Я пробовал это, но выдает ошибку, котораяговорит, что конфигурация доступна только для чтения.

var section = HttpContext.Current.GetSection("system.web/httpRuntime") as System.Web.Configuration.HttpRuntimeSection;
section.WaitChangeNotification = 6;

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Это не очень хорошая идея, но это вполне возможно с помощью отражения.

Ниже приведен пример кода внедрения расширения Soap в раздел веб-служб конфигурации приложения:

// Turn the read only field non-readonly
WebServicesSection wss = WebServicesSection.Current;
SoapExtensionTypeElement e = new SoapExtensionTypeElement(typeof (TraceExtension), 1, PriorityGroup.High);

FieldInfo readOnlyField = typeof(System.Configuration.ConfigurationElementCollection).GetField("bReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
readOnlyField.SetValue(wss.SoapExtensionTypes, false);

// Bind to web services section of config
wss.SoapExtensionTypes.Add(e);

// Restore the original so other things don't break
MethodInfo resetMethod = typeof(System.Configuration.ConfigurationElementCollection).GetMethod("ResetModified", BindingFlags.NonPublic | BindingFlags.Instance);
resetMethod.Invoke(wss.SoapExtensionTypes, null);

MethodInfo setReadOnlyMethod = typeof(System.Configuration.ConfigurationElementCollection).GetMethod("SetReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
setReadOnlyMethod.Invoke(wss.SoapExtensionTypes, null);

Очевидно, что это не ретроспектива , поэтому она будет влиять только на значения, извлеченные из конфигурации после того, как это будет сделано.

... и, опять же, вы, вероятно, не хотите сделать это, но это возможно.

1 голос
/ 11 мая 2011

Существует другой API для редактирования файла конфигурации.Вкратце, вы можете использовать WebConfigurationManager , чтобы открыть файл конфигурации, чтобы получить объект Конфигурация , изменить его, а затем использовать один из методов Сохранить для сохранения файла.

Подробнее см. Редактирование файлов конфигурации ASP.NET из MSDN.Также обратите внимание, что изменение файла конфигурации перезапустит ваше приложение.

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