У меня есть класс, содержащий следующий ConfigurationSection:
namespace DummyConsole {
class TestingComponentSettings: ConfigurationSection {
[ConfigurationProperty("waitForTimeSeconds", IsRequired=true)]
[IntegerValidator(MinValue = 1, MaxValue = 100, ExcludeRange = false)]
public int WaitForTimeSeconds
{
get { return (int)this["waitForTimeSeconds"]; }
set { this["waitForTimeSeconds"] = value; }
}
[ConfigurationProperty("loginPage", IsRequired = true, IsKey=false)]
public string LoginPage
{
get { return (string)this["loginPage"]; }
set { this["loginPage"] = value; }
}
}
}
У меня затем есть следующее в моем .config файле:
Когда я затем пытаюсь использовать этот раздел конфигурации, я получаю следующую ошибку:
var Testing = ConfigurationManager.GetSection("TestingComponentSettings")
as TestingComponentSettings;
ConfigurationErrorsException был не обработан
Значение для свойства 'waitForTimeSeconds' не допустимо. Ошибка: значение должно быть в диапазоне 1-100.
Если я изменяюсь IntegerValidator
чтобы иметь ExcludeRage = верный, я (очевидно), добираюсь:
ConfigurationErrorsException был не обработан
Значение для свойства 'waitForTimeSeconds' не допустимо. Ошибка: значение не должно быть в диапазоне 1-100
Если я затем изменяю значение свойства в .config к числу выше, чем 100, это работает.
Если я изменяю блок проверки допустимости, чтобы просто иметь a MaxValue
из 100 это работает, но также примет значение-1.
Действительно ли возможно использовать IntegerValidatorAttribute
с диапазоном как это?
Редактирование для добавления
Подтвержденный как выпуск Microsoft.
AS Skrud Указывает, MS обновила проблему CONNECT:
Объявленная проблема заключается в из-за quirk в том, как система конфигурации обрабатывает валидаторы. Каждое числовое свойство конфигурации имеет значение по умолчанию - даже если один не указан. Когда по умолчанию не указано значение 0, используется 0. В этом примере свойство конфигурации заканчивается со значением по умолчанию, которое не находится в действительном диапазоне, указанном целочисленным валидатором. В результате конфигурация анализ всегда терпит неудачу.
Чтобы исправить это, измените определение свойства конфигурации, чтобы включить значение по умолчанию, которое находится в диапазоне от 1 до 100:
[ConfigurationProperty («WaitFortimeseconds», isrequired = true, Defaultvalue = "10")]
Это означает, что имущество будет иметь значение по умолчанию, но я на самом деле не вижу, что в качестве основной проблемы - мы говорим, что она должна иметь значение, которое должно быть в пределах «разумного» диапазона, и должно быть подготовлено Чтобы установить разумное значение по умолчанию.