public EnvironmentConfig GetEnvironmentConfiguration(string environmentName)
 {
     try
     {
         EnvironmentConfig env;
         if (environmentCache.TryGetValue(environmentName, out env))
         {
             return(env);
         }
         if (ConfigSet.IsNull())
         {
             LoadConfigSet();
         }
         var envs = from e in ConfigSet.Environments where e.EnvironmentName == environmentName select e;
         env = envs.First();
         environmentCache.TryAdd(environmentName, env);
         return(env);
     }
     catch (Exception ex)
     {
         if (LastException != null)
         {
             LastException.Log();
         }
         throw new InvalidDataException(string.Format("Cannot find environment node with name = {0}", environmentName), LastException ?? ex);
     }
 }