.NETの新しいregular expression match timeoutを使用しようとしています。具体的にはAppDomain.CurrentDomain.SetData
の"REGEX_DEFAULT_MATCH_TIMEOUT"
プロパティ正規表現のコンストラクタへのTimeSpan
は正常に動作します)。 3秒後、それはRegexMatchTimeoutException
をスロー:それは期待どおりに動作グローバル正規表現のマッチタイムアウトは、コンソールアプリケーションでは動作しますが、ASP.NET MVCアプリケーションでは動作しません。
static void Main(string[] args)
{
AppDomain.CurrentDomain.SetData("REGEX_DEFAULT_MATCH_TIMEOUT",
TimeSpan.FromSeconds(3));
var m = System.Text.RegularExpressions.Regex.Match(
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "^(x+x+)+y$");
}
:
私はこのメインメソッドで新しいコンソールアプリケーションを作成
。しかし、私はHomeController
を追加し、空のMVC 4アプリを作成し、このアクションメソッド場合:
public ActionResult Index()
{
AppDomain.CurrentDomain.SetData("REGEX_DEFAULT_MATCH_TIMEOUT",
TimeSpan.FromSeconds(3));
var m = System.Text.RegularExpressions.Regex.Match(
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "^(x+x+)+y$");
return View();
}
と例外がスローされないとの一致の試みは継続されhttp://localhost:XXXXX/
をご覧ください。 (あなたが十分に長く待つ場合は、それが最終的に終了し、その後、行方不明のビューに文句を言うでしょう。しかし長いveeeryを取ること。)
代わりに、コントローラのアクションがない内のGlobal.asax
のApplication_Start()
でSetData
を呼び出しますタイムアウトを発生させます。
新しい正規表現オブジェクトhttp://msdn.microsoft.com/en-us/library/hh160196.aspxを初期化し、この正規表現に対してのみマッチタイムアウトを設定できますか?それがうまくいかない場合 - 私はあなたにバグを提出することをお勧めしますhttps://connect.microsoft.com/ – outcoldman
@outcoldman私の質問で言ったように、コンストラクタバリアントは正常に動作します。 – balpha