已添加项,字典中的关键字"RegEx",经常出错,有的时候又正常,不知道为什么.
报错提示:如这个网页上提示的那样: 
 http://forums.microsoft.com/china/ShowPost.aspx?PostID=3275771&SiteID=15

解决方案 »

  1.   

    详细的错误信息贴在最后面。该错误一般发生在系统第一次启动时,刷新页面后就会正常,之后也不会再有此错误提示。从错误提示来看,我猜测应该是UrlrerittingNet的问题,似乎是Key值重复,但我的配置中却没有重复的Key值。请高手指点。谢谢。 详细的错误信息:已添加项。字典中的关键字:“RegEx”所添加的关键字:“RegEx” 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentException: 已添加项。字典中的关键字:“RegEx”所添加的关键字:“RegEx”源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: [ArgumentException: 已添加项。字典中的关键字:“RegEx”所添加的关键字:“RegEx”]
       System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) +2904181
       System.Collections.Hashtable.Add(Object key, Object value) +11
       System.Configuration.Provider.ProviderCollection.Add(ProviderBase provider) +75
       UrlRewritingNet.Configuration.Provider.UrlRewritingProviderCollection.Add(ProviderBase provider) +40
       UrlRewritingNet.Web.UrlRewriting.Initialize() +181
       UrlRewritingNet.Web.UrlRewriting.CreateRewriteRule(String providerName) +13
       UrlRewritingNet.Web.UrlRewriteModule.Init(HttpApplication context) +217
       System.Web.HttpApplication.InitModulesCommon() +66
       System.Web.HttpApplication.InitInternal(HttpContext context, HttpApplicationState state, MethodInfo[] handlers) +1006
       System.Web.HttpApplicationFactory.GetNormalApplicationInstance(HttpContext context) +259
       System.Web.HttpApplicationFactory.GetApplicationInstance(HttpContext context) +114
       System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +350 
      

  2.   

    Hash表重复问题,如果网站头一次运行,两个页面同时申请访问可能出现插入两次Hash表同一个Provider的问题 public class UrlRewritingProviderCollection : ProviderCollection
        {
            public override void Add(ProviderBase provider)
            {
                if (provider == null)
                    throw new ArgumentNullException("provider");
                if (!(provider is UrlRewritingProvider))
                {
                    string msg = string.Format("Provider must implement type {0}", typeof(UrlRewritingProvider).ToString());
                    throw new ArgumentException(msg, "provider");
                }
                if (base.Count == 0)
                {
                    base.Add(provider);
                }

            }
            public void CopyTo(UrlRewritingProvider[] providers, int index)
            {
                base.CopyTo(providers, index);
            }
            new public UrlRewritingProvider this[string name]
            {
                get
                {
                    return (UrlRewritingProvider)base[name];
                }
            }
        }
    下载url加一个红色的判断就可以了,或者用trycacth