internal static IConfigMapPath GetInstance() { IConfigMapPath instance = IISMapPath.GetInstance(); IConfigMapPath configMapPath = HostingEnvironment.ConfigMapPath; if ((configMapPath != null) && !(instance.GetType() == configMapPath.GetType())) { return(new HostingPreferredMapPath(instance, configMapPath)); } return(instance); }
internal static IConfigMapPath GetInstance() { IConfigMapPath iisConfigMapPath = IISMapPath.GetInstance(); IConfigMapPath hostingConfigMapPath = HostingEnvironment.ConfigMapPath; // Only delegate if the types implementing IConfigMapPath are different. if (hostingConfigMapPath == null || iisConfigMapPath.GetType() == hostingConfigMapPath.GetType()) { return(iisConfigMapPath); } return(new HostingPreferredMapPath(iisConfigMapPath, hostingConfigMapPath)); }
public string GetFilePaths(int webLevelAsInt, string path, string site, string locationSubPath) { string str; string str2; VirtualPath path3; string str3; string str4; string str5; VirtualPath path4; WebLevel webLevel = (WebLevel)webLevelAsInt; IConfigMapPath instance = IISMapPath.GetInstance(); WebConfigurationHost.GetConfigPaths(instance, webLevel, VirtualPath.CreateNonRelativeAllowNull(path), site, locationSubPath, out path3, out str, out str2, out str3, out str4); ArrayList list = new ArrayList(); list.Add(VirtualPath.GetVirtualPathString(path3)); list.Add(str); list.Add(str2); list.Add(str3); list.Add(str4); WebConfigurationHost.GetSiteIDAndVPathFromConfigPath(str3, out str5, out path4); list.Add("machine"); list.Add(HttpConfigurationSystem.MachineConfigurationFilePath); if (webLevel != WebLevel.Machine) { list.Add("machine/webroot"); list.Add(HttpConfigurationSystem.RootWebConfigurationFilePath); for (VirtualPath path5 = path4; path5 != null; path5 = path5.Parent) { string configPathFromSiteIDAndVPath = WebConfigurationHost.GetConfigPathFromSiteIDAndVPath(str2, path5); string str7 = Path.Combine(instance.MapPath(str2, path5.VirtualPathString), "web.config"); list.Add(configPathFromSiteIDAndVPath); list.Add(str7); } } StringBuilder builder = new StringBuilder(); for (int i = 0; i < list.Count; i++) { if (i > 0) { builder.Append('<'); } string str8 = (string)list[i]; builder.Append(str8); } return(builder.ToString()); }
private void ChooseAndInitConfigMapPath(bool useConfigMapPath, IConfigMapPath configMapPath, ConfigurationFileMap fileMap) { if (useConfigMapPath) { this._configMapPath = configMapPath; } else if (fileMap != null) { this._configMapPath = new UserMapPath(fileMap); } else if (HostingEnvironment.IsHosted) { this._configMapPath = HostingPreferredMapPath.GetInstance(); } else { this._configMapPath = IISMapPath.GetInstance(); } this._configMapPath2 = this._configMapPath as IConfigMapPath2; }
internal static void EnsureInit(IConfigMapPath configMapPath, bool listenToFileChanges, bool initComplete) { if (!s_inited) { lock (s_initLock) { if (!s_inited) { s_initComplete = initComplete; if (configMapPath == null) { configMapPath = IISMapPath.GetInstance(); } s_configMapPath = configMapPath; s_configSystem = (IConfigSystem)Activator.CreateInstance(Type.GetType("System.Configuration.Internal.ConfigSystem, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", true), true); object[] hostInitParams = new object[6]; hostInitParams[0] = true; hostInitParams[1] = s_configMapPath; hostInitParams[3] = HostingEnvironment.ApplicationVirtualPath; hostInitParams[4] = HostingEnvironment.SiteNameNoDemand; hostInitParams[5] = HostingEnvironment.SiteID; s_configSystem.Init(typeof(WebConfigurationHost), hostInitParams); s_configRoot = s_configSystem.Root; s_configHost = (WebConfigurationHost)s_configSystem.Host; HttpConfigurationSystem internalConfigSystem = new HttpConfigurationSystem(); if (listenToFileChanges) { s_configRoot.ConfigChanged += new InternalConfigEventHandler(internalConfigSystem.OnConfigurationChanged); } s_configSettingsFactory = (IInternalConfigSettingsFactory)Activator.CreateInstance(Type.GetType("System.Configuration.Internal.InternalConfigSettingsFactory, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", true), true); s_configSettingsFactory.SetConfigurationSystem(internalConfigSystem, initComplete); s_httpConfigSystem = internalConfigSystem; s_inited = true; } } } }
public string GetFilePaths(int webLevelAsInt, string path, string site, string locationSubPath) { WebLevel webLevel = (WebLevel)webLevelAsInt; IConfigMapPath configMapPath = IISMapPath.GetInstance(); // Get the configuration paths and application information string appSiteName, appSiteID; VirtualPath appPath; string configPath, locationConfigPath; WebConfigurationHost.GetConfigPaths(configMapPath, webLevel, VirtualPath.CreateNonRelativeAllowNull(path), site, locationSubPath, out appPath, out appSiteName, out appSiteID, out configPath, out locationConfigPath); // // Format of filePaths: // appPath < appSiteName < appSiteID < configPath < locationConfigPath [< configPath < fileName]+ // ArrayList filePaths = new ArrayList(); filePaths.Add(VirtualPath.GetVirtualPathString(appPath)); filePaths.Add(appSiteName); filePaths.Add(appSiteID); filePaths.Add(configPath); filePaths.Add(locationConfigPath); string dummySiteID; VirtualPath virtualPath; WebConfigurationHost.GetSiteIDAndVPathFromConfigPath(configPath, out dummySiteID, out virtualPath); // pathmap for machine.config filePaths.Add(WebConfigurationHost.MachineConfigPath); filePaths.Add(HttpConfigurationSystem.MachineConfigurationFilePath); // pathmap for root web.config if (webLevel != WebLevel.Machine) { filePaths.Add(WebConfigurationHost.RootWebConfigPath); filePaths.Add(HttpConfigurationSystem.RootWebConfigurationFilePath); // pathmap for other paths for (VirtualPath currentVirtualPath = virtualPath; currentVirtualPath != null; currentVirtualPath = currentVirtualPath.Parent) { string currentConfigPath = WebConfigurationHost.GetConfigPathFromSiteIDAndVPath(appSiteID, currentVirtualPath); string currentFilePath = configMapPath.MapPath(appSiteID, currentVirtualPath.VirtualPathString); currentFilePath = System.IO.Path.Combine(currentFilePath, HttpConfigurationSystem.WebConfigFileName); filePaths.Add(currentConfigPath); filePaths.Add(currentFilePath); } } // join into a single string StringBuilder sb = new StringBuilder(); for (int i = 0; i < filePaths.Count; i++) { if (i > 0) { sb.Append(FilePathsSeparatorChar); } string part = (string)filePaths[i]; sb.Append(part); } return(sb.ToString()); }
// // Set this configuration system to the default for requests ConfigurationManager.GetSection // static internal void EnsureInit(IConfigMapPath configMapPath, bool listenToFileChanges, bool initComplete) { if (!s_inited) { lock (s_initLock) { if (!s_inited) { s_initComplete = initComplete; // Use the IIS map path if one is not explicitly provided if (configMapPath == null) { configMapPath = IISMapPath.GetInstance(); } s_configMapPath = configMapPath; Type typeConfigSystem = Type.GetType(ConfigSystemTypeString, true); s_configSystem = (IConfigSystem)Activator.CreateInstance(typeConfigSystem, true); s_configSystem.Init( typeof(WebConfigurationHost), // The config host we'll create and use // The remaining parameters are passed to the config host: true, // Use the supplied configMapPath s_configMapPath, // the configMapPath to use null, // ConfigurationFileMap HostingEnvironment.ApplicationVirtualPath, // app path HostingEnvironment.SiteNameNoDemand, // app site name HostingEnvironment.SiteID); // app site ID s_configRoot = s_configSystem.Root; s_configHost = (WebConfigurationHost)s_configSystem.Host; // Register for config changed notifications HttpConfigurationSystem configSystem = new HttpConfigurationSystem(); if (listenToFileChanges) { s_configRoot.ConfigChanged += new InternalConfigEventHandler(configSystem.OnConfigurationChanged); } // Set the configSystem into the ConfigurationManager class. // Please note that factory.SetConfigurationSystem will end up calling // ConfigurationManager.SetConfigurationSystem, which is an internal static method // in System.Configuration.dll. If we want to call that here, we have to use // reflection and that's what we want to avoid. Type typeFactory = Type.GetType(InternalConfigSettingsFactoryTypeString, true); s_configSettingsFactory = (IInternalConfigSettingsFactory)Activator.CreateInstance(typeFactory, true); s_configSettingsFactory.SetConfigurationSystem(configSystem, initComplete); // The system has been successfully set, so mark that we should use it. s_httpConfigSystem = configSystem; // Mark as having completed initialization after s_httpConfigSystem has been set. // s_inited is coordinated with s_httpConfigSystem in UseHttpConfigurationSystem. s_inited = true; } } } Debug.Assert(s_httpConfigSystem != null, "s_httpConfigSystem != null - The appdomain is using the client configuration system."); }