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 ...
随机推荐
- python返回值与局部全局变量
Python 2.7.10 (default, Oct 14 2015, 16:09:02) [GCC 5.2.1 20151010] on linux2 Type "copyright&q ...
- sublime text install packages报错
汉化版的sublime text安装软件包的时候报错如下: There are no packages available for install 打开控制台,ctrl+~,然后看到如下错误: Pac ...
- mysql连结查询
2016年4月13日 18:08:22 星期三 union 会生成临时表, 然后一同取出合并 join 或子查询, 会生成临时表进行嵌套循环 临时表, 缺点就是没有索引
- Linux常用命令学习3---(文件的压缩和解压缩命令zip unzip tar、关机和重启命令shutdown reboot……)
1.压缩和解压缩命令 常用压缩格式:.zip..gz..bz2..tar.gz..tar.bz2..rar .zip格式压缩和解压缩命令 zip 压缩文件名 源文件:压缩文件 ...
- 【转载】PyQt QSetting保存设置
转载地址: http://blog.sina.com.cn/s/blog_4b5039210100h3zb.html 用户对应用程序经常有这样的要求:要求它能记住它的settings,比如窗口大小,位 ...
- C# 执行文件的根目录 (转)
1.取得控制台应用程序的根目录方法 方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径方法2.AppDomain.CurrentDomain.Bas ...
- MSSQ调优所需用的语句
看一下各项指标是否正常,是否有阻塞,这个语句选取了前10个最耗CPU时间的会话语句 [session_id], [request_id], [start_time] AS '开始时间', [statu ...
- 【Mybatis框架】查询缓存(二级缓存)
继上一篇博客,我们讲述了mybatis的一级缓存,接下来,我们来学习一下mybatis的二级缓存 博客链接地址: http://blog.csdn.NET/liweizhong193516/artic ...
- cve-2015-5199漏洞分析
继续之前hackteam的flash漏洞,这次的对象为cve-2015-5199,遂做一下记录. 首先,在该exp中TryExpl函数为漏洞的触发函数,该函数也为本次调试的主要对象,函数的开始首先创建 ...
- oracle触发器与数据导入导出的简单使用
exp cjtxx/123456@192.168.80.231/orcl file=d:\cjtxx.dmp owner=cjtxx [tables=tablename] imp cjttest/12 ...