public void Application_Start(object sender, EventArgs e) { var cps = EngineContext.Current.ResolveAll <IConfigurationProvider>(); if (cps != null && cps.Count() > 0) { ConfigurationSystem.Install(cps); } }
public static void Install(IEnumerable <IConfigurationProvider> providers) { FieldInfo[] fiStateValues = null; Type tInitState = typeof(System.Configuration.ConfigurationManager).GetNestedType("InitState", BindingFlags.NonPublic); if (null != tInitState) { fiStateValues = tInitState.GetFields(); } FieldInfo fiInit = typeof(System.Configuration.ConfigurationManager).GetField("s_initState", BindingFlags.NonPublic | BindingFlags.Static); FieldInfo fiSystem = typeof(System.Configuration.ConfigurationManager).GetField("s_configSystem", BindingFlags.NonPublic | BindingFlags.Static); if (fiInit != null && fiSystem != null && null != fiStateValues) { fiInit.SetValue(null, fiStateValues[1].GetValue(null)); fiSystem.SetValue(null, null); } ConfigurationSystem confSys = new ConfigurationSystem(); Type configFactoryType = Type.GetType("System.Configuration.Internal.InternalConfigSettingsFactory, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", true); IInternalConfigSettingsFactory configSettingsFactory = (IInternalConfigSettingsFactory)Activator.CreateInstance(configFactoryType, true); configSettingsFactory.SetConfigurationSystem(confSys, false); Type clientConfigSystemType = Type.GetType("System.Configuration.ClientConfigurationSystem, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", true); clientConfigSystem = (IInternalConfigSystem)Activator.CreateInstance(clientConfigSystemType, true); configProviders = providers; if (configProviders != null) { foreach (var p in configProviders) { p.LoadConfigurations(); } } }
public static void Install(IEnumerable<IConfigurationProvider> providers) { FieldInfo[] fiStateValues = null; Type tInitState = typeof(System.Configuration.ConfigurationManager).GetNestedType("InitState", BindingFlags.NonPublic); if (null != tInitState) { fiStateValues = tInitState.GetFields(); } FieldInfo fiInit = typeof(System.Configuration.ConfigurationManager).GetField("s_initState", BindingFlags.NonPublic | BindingFlags.Static); FieldInfo fiSystem = typeof(System.Configuration.ConfigurationManager).GetField("s_configSystem", BindingFlags.NonPublic | BindingFlags.Static); if (fiInit != null && fiSystem != null && null != fiStateValues) { fiInit.SetValue(null, fiStateValues[1].GetValue(null)); fiSystem.SetValue(null, null); } ConfigurationSystem confSys = new ConfigurationSystem(); Type configFactoryType = Type.GetType("System.Configuration.Internal.InternalConfigSettingsFactory, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", true); IInternalConfigSettingsFactory configSettingsFactory = (IInternalConfigSettingsFactory)Activator.CreateInstance(configFactoryType, true); configSettingsFactory.SetConfigurationSystem(confSys, false); Type clientConfigSystemType = Type.GetType("System.Configuration.ClientConfigurationSystem, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", true); clientConfigSystem = (IInternalConfigSystem)Activator.CreateInstance(clientConfigSystemType, true); configProviders = providers; if (configProviders != null) { foreach (var p in configProviders) { p.LoadConfigurations(); } } }