private ConfigurationCache.CacheEntry RequestEndpointInfo(Uri endpoint, int timeout)
        {
            IEndpointInformationRetriever endpointInformationRetriever = this.endpointRetrieverFactory.Create(endpoint, timeout);

            ConfigurationCache.CacheEntry cacheEntry;
            try
            {
                EndpointInformation endpointInformation = endpointInformationRetriever.FetchEndpointInformation();
                cacheEntry = new ConfigurationCache.CacheEntry(this.dateTimeFactory.GetUtcNow(), endpointInformation);
            }
            catch (EndpointConfigurationException ex)
            {
                ExTraceGlobals.ConfigurationCacheTracer.TraceError <string>((long)this.GetHashCode(), "Unable to fetch endpoint info. {0}", ex.Message);
                cacheEntry = new ConfigurationCache.CacheEntry(this.dateTimeFactory.GetUtcNow(), ex);
            }
            if (this.cache.ContainsKey(endpoint.AbsoluteUri))
            {
                this.cache[endpoint.AbsoluteUri] = cacheEntry;
            }
            else
            {
                this.cache.Add(endpoint.AbsoluteUri, cacheEntry);
            }
            return(cacheEntry);
        }
 public UrlResolver GetUrlResolver(HolidayConfigurationSnapshot configSnapshot)
 {
     ConfigurationCache.CacheEntry endpointCacheEntry = this.GetEndpointCacheEntry(configSnapshot);
     if (endpointCacheEntry.UrlResolver == null)
     {
         throw endpointCacheEntry.ErrorInformation;
     }
     return(endpointCacheEntry.UrlResolver);
 }