ASP.NET で web.config の カスタム設定 を 検証 する 方法

0 件のコメント

web.config や app.config に カスタム設定 を追加した際、その設定値 (config中に設定された値) が意図した通りの値に設定されているかどうか検証する仕組みがあります。 ここでは、デフォルトで存在する検証の仕組みを利用する例をまとめます。 ちなみに、ここで取り上げている各種 Validator は System.Configuration 名前空間 に存在しています。

目次

StringValidator 属性

文字列が指定された長さかどうか、指定した文字を含まないかどうかを検証します。

1
2
3
4
5
6
7
8
9
[ConfigurationProperty("message", DefaultValue = "Hello")]
[StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
                MinLength = 0,
                MaxLength = 100)]
public string Message
{
    get { return (string)base["message"]; }
    set { base["message"] = value; }
}

RegexStringValidator 属性

文字列が指定された正規表現を満たしているかどうかを検証します。

1
2
3
4
5
6
7
[ConfigurationProperty("url", DefaultValue = "http://www.contso.com/")]
[RegexStringValidator(@"https?://[\w\-\.~#\$&\+\/:=\?%]+")]
public string Url
{
    get { return (string)base["url"]; }
    set { base["url"] = value; }
}

IntegerValidator 属性, LongValidator 属性

数値が指定された 範囲内 または 範囲外 に収まるかどうかを検証します。 IntegerValidatorInt32 に対応し、 LongValidatorInt64 に対応します。 指定できる 名前付き引数 はどちらも同じです。 ExcludeRange = false の場合 (デフォルト の場合)、 MinValue <= 値 <= MaxValue かどうか。 ExcludeRange = true の場合、 値 < MinValue && MaxValue < 値 かどうか。

1
2
3
4
5
6
7
8
9
[ConfigurationProperty("maxConnectionCount", DefaultValue = "5")]
[IntegerValidator(ExcludeRange = false,
                MinValue = 0,
                MaxValue = 10)]
public int MaxConnectionCount
{
    get { return (int)base["maxConnectionCount"]; }
    set { base["maxConnectionCount"] = value; }
}

TimeSpanValidator 属性

TimeSpan が指定された 範囲内 または 範囲外 に収まっているかどうかを検証します。 ExcludeRange = false の場合 (デフォルト の場合)、 MinValue <= 値 <= MaxValue かどうか。 ExcludeRange = true の場合、 値 < MinValue && MaxValue < 値 かどうか。

1
2
3
4
5
6
7
8
9
[ConfigurationProperty("duration", DefaultValue = "0:03:00")]
[TimeSpanValidator(ExcludeRange = false,
                MinValueString = "0:01:00",
                MaxValueString = "0:05:00")]
public TimeSpan Span
{
    get { return (TimeSpan)base["duration"]; }
    set { base["duration"] = value; }
}

関連記事

最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!