IConfigurationSectionHandler 使用~
读取webconfig中自定义的xml 处理对特定的配置节的访问。
webconfig
- <configSections>
- <section name="NopConfig" type="BotanicSystem.Core.Configuration.NopConfig, BotanicSystem.Core" requirePermission="false" />
- </configSections>
- <NopConfig>
- <!-- Web farm support
- Enable "MultipleInstancesEnabled" if you run multiple instances.
- Enable "RunOnAzureWebsites" if you run on Windows Azure Web sites (not cloud services). -->
- <WebFarms MultipleInstancesEnabled="False" RunOnAzureWebsites="False" />
- <!-- Windows Azure BLOB storage. Specify your connection string, container name, end point for BLOB storage here -->
- <AzureBlobStorage ConnectionString="" ContainerName="" EndPoint="" />
- <!-- Redis support (used by web farms, Azure, etc). Find more about it at https://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-azure-redis-cache/ -->
- <RedisCaching Enabled="false" ConnectionString="localhost" />
- <!-- You can get the latest version of user agent strings at http://browscap.org/ -->
- <UserAgentStrings databasePath="~/App_Data/browscap.xml" />
- <!-- Set the setting below to "False" if you did not upgrade from one of the previous versions. It can slightly improve performance -->
- <SupportPreviousNopcommerceVersions Enabled="True" />
- <!-- Do not edit this element. For advanced users only -->
- <Installation DisableSampleDataDuringInstallation="False" UseFastInstallationService="False" PluginsIgnoredDuringInstallation="" />
- </NopConfig>
解析读取
- /// <summary>
- /// Represents a NopConfig
- /// </summary>
- public partial class NopConfig : IConfigurationSectionHandler
- {
- /// <summary>
- /// Creates a configuration section handler.
- /// </summary>
- /// <param name="parent">Parent object.</param>
- /// <param name="configContext">Configuration context object.</param>
- /// <param name="section">Section XML node.</param>
- /// <returns>The created section handler object.</returns>
- public object Create(object parent, object configContext, XmlNode section)
- {
- var config = new NopConfig();
- var startupNode = section.SelectSingleNode("Startup");
- config.IgnoreStartupTasks = GetBool(startupNode, "IgnoreStartupTasks");
- var redisCachingNode = section.SelectSingleNode("RedisCaching");
- config.RedisCachingEnabled = GetBool(redisCachingNode, "Enabled");
- config.RedisCachingConnectionString = GetString(redisCachingNode, "ConnectionString");
- var userAgentStringsNode = section.SelectSingleNode("UserAgentStrings");
- config.UserAgentStringsPath = GetString(userAgentStringsNode, "databasePath");
- var supportPreviousNopcommerceVersionsNode = section.SelectSingleNode("SupportPreviousNopcommerceVersions");
- config.SupportPreviousNopcommerceVersions = GetBool(supportPreviousNopcommerceVersionsNode, "Enabled");
- var webFarmsNode = section.SelectSingleNode("WebFarms");
- config.MultipleInstancesEnabled = GetBool(webFarmsNode, "MultipleInstancesEnabled");
- config.RunOnAzureWebsites = GetBool(webFarmsNode, "RunOnAzureWebsites");
- var azureBlobStorageNode = section.SelectSingleNode("AzureBlobStorage");
- config.AzureBlobStorageConnectionString = GetString(azureBlobStorageNode, "ConnectionString");
- config.AzureBlobStorageContainerName = GetString(azureBlobStorageNode, "ContainerName");
- config.AzureBlobStorageEndPoint = GetString(azureBlobStorageNode, "EndPoint");
- var installationNode = section.SelectSingleNode("Installation");
- config.DisableSampleDataDuringInstallation = GetBool(installationNode, "DisableSampleDataDuringInstallation");
- config.UseFastInstallationService = GetBool(installationNode, "UseFastInstallationService");
- config.PluginsIgnoredDuringInstallation = GetString(installationNode, "PluginsIgnoredDuringInstallation");
- return config;
- }
- private string GetString(XmlNode node, string attrName)
- {
- return SetByXElement<string>(node, attrName, Convert.ToString);
- }
- private bool GetBool(XmlNode node, string attrName)
- {
- return SetByXElement<bool>(node, attrName, Convert.ToBoolean);
- }
- private T SetByXElement<T>(XmlNode node, string attrName, Func<string, T> converter)
- {
- if (node == null || node.Attributes == null) return default(T);
- var attr = node.Attributes[attrName];
- if (attr == null) return default(T);
- var attrVal = attr.Value;
- return converter(attrVal);
- }
- /// <summary>
- /// Indicates whether we should ignore startup tasks
- /// </summary>
- public bool IgnoreStartupTasks { get; private set; }
- /// <summary>
- /// Path to database with user agent strings
- /// </summary>
- public string UserAgentStringsPath { get; private set; }
- /// <summary>
- /// Indicates whether we should use Redis server for caching (instead of default in-memory caching)
- /// </summary>
- public bool RedisCachingEnabled { get; private set; }
- /// <summary>
- /// Redis connection string. Used when Redis caching is enabled
- /// </summary>
- public string RedisCachingConnectionString { get; private set; }
- /// <summary>
- /// Indicates whether we should support previous nopCommerce versions (it can slightly improve performance)
- /// </summary>
- public bool SupportPreviousNopcommerceVersions { get; private set; }
- /// <summary>
- /// A value indicating whether the site is run on multiple instances (e.g. web farm, Windows Azure with multiple instances, etc).
- /// Do not enable it if you run on Azure but use one instance only
- /// </summary>
- public bool MultipleInstancesEnabled { get; private set; }
- /// <summary>
- /// A value indicating whether the site is run on Windows Azure Websites
- /// </summary>
- public bool RunOnAzureWebsites { get; private set; }
- /// <summary>
- /// Connection string for Azure BLOB storage
- /// </summary>
- public string AzureBlobStorageConnectionString { get; private set; }
- /// <summary>
- /// Container name for Azure BLOB storage
- /// </summary>
- public string AzureBlobStorageContainerName { get; private set; }
- /// <summary>
- /// End point for Azure BLOB storage
- /// </summary>
- public string AzureBlobStorageEndPoint { get; private set; }
- /// <summary>
- /// A value indicating whether a store owner can install sample data during installation
- /// </summary>
- public bool DisableSampleDataDuringInstallation { get; private set; }
- /// <summary>
- /// By default this setting should always be set to "False" (only for advanced users)
- /// </summary>
- public bool UseFastInstallationService { get; private set; }
- /// <summary>
- /// A list of plugins ignored during nopCommerce installation
- /// </summary>
- public string PluginsIgnoredDuringInstallation { get; private set; }
- }
使用
- var config = ConfigurationManager.GetSection("NopConfig") as NopConfig;
IConfigurationSectionHandler 是 在System.Configuration 下
IConfigurationSectionHandler 使用~的更多相关文章
- 使用IConfigurationSectionHandler在web.config中增加自定义配置
一. 场景 这里仅举一个简单应用的例子,我希望在web.config里面增加网站的基本信息,如:网站名称,网站版本号,是否将网站暂时关闭等.二. 基本实现方法1. 定义配置节点对应的类:Site ...
- (转).net webconfig使用IConfigurationSectionHandler自定section
自定义配置结构 (使用IConfigurationSectionHandler) 假设有以下的配置信息,其在MyInfo可以重复许多次,那么应如何读取配置呢?这时就要使用自定义的配置程序了.<m ...
- IConfigurationSectionHandler 接口
IConfigurationSectionHandler 处理对特定的配置节的访问. 示例代码: public class MyConfig : IConfigurationSectionHandle ...
- .Net——实现IConfigurationSectionHandler接口定义处理程序处理自己定义节点
除了使用.net里面提供的内置处理程序来处理我们的自己定义节点外,我们还能够通过多种方法,来自己定义处理类处理我们的自己定义节点,本文主要介绍通过实现IConfigurationSectionHand ...
- .Net——实现IConfigurationSectionHandler接口定义处理程序处理自定义节点
除了使用.net里面提供的内置处理程序来处理我们的自定义节点外,我们还可以通过多种方法,来自己定义处理类处理我们的自定义节点,本文主要介绍通过实现IConfigurationSectionHandle ...
- spring.net 框架分析(三)ContextRegistry.GetContext()
我们通过ContextRegistry.GetContext()建立了一个IApplicationContext得实例,那么这个实例具体是怎么建立的了. 我们来分析一下容器实例建立的过程: 我们在配置 ...
- C# 自定义Section
一.在App.config中自定义Section,这个使用了SectionGroup <?xml version="1.0" encoding="utf-8&quo ...
- Url路径重写的原理
ASP.net的地址重写(URLRewriter)实现原理及代码示例 吴剑 2007-01-01 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 概述 访问 ...
- 第13章 .NET应用程序配置
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...
随机推荐
- PHP array 操作函数
array_map 函数的介绍 将数组的每个单元使用回调函数格式: array_map(callback, array) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- iOS On-Demand Resources简单理解
ios9引入了一个新功能,On-Demand Resources,它是app thinning 的一部分.这个机能简单的说,就是在下载app的时候,app中包含的不重要资源不下载,等到需要时,在由系统 ...
- SAP 销售订单的文本项目
http://blog.itpub.net/9859323/viewspace-616508/ ls_hdname = wa_vbak-vbeln . CALL FUNCTION 'READ_ ...
- sublime text3 输入中文的解决方法
1. 下载我们需要的文件,打开终端 ,输入: git clone https://github.com/lyfeyaj/sublime-text-imfix.git 2. 将下载的文件解压之后,移到当 ...
- Android笔记:HTTP相关
发送HTTP请求 HttpURLConnection.HttpClient XML解析 Pull 解析.SAX 解析.DOM 解析 解析JSON 格式数据 官方提供的JSONObject.谷歌的开源库 ...
- hbase集群的启动,注意几个问题
1.hbase的改的会影响器他的组件的使用, 故而, 在修改 hadoop的任何组件后, 一定要记得其它的组件也能受到影响, 一下是我在将hadoop的集群改了之后 , 再次运行hbase的时候, 就 ...
- Forward-backward梯度求导(tensorflow word2vec实例)
考虑不可分的例子 通过使用basis functions 使得不可分的线性模型变成可分的非线性模型 最常用的就是写出一个目标函数 并且使用梯度下降法 来计算 梯度的下降法的梯度 ...
- Logging vs NoLogging
You Asked My Prod environments is like this. Three Node RAC, Active Data guard enabled. There is a p ...
- Asp.Net MVC4 + Oracle + EasyUI 学习 序章
Asp.Net MVC4 + Oracle + EasyUI 序章 -- 新建微软实例 本文链接:http://www.cnblogs.com/likeli/p/4233387.html 1. 简 ...
- NPOIExcel
public class NPOIExcel { private string _title; private string _sheetName; private string _filePath; ...