读取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 使用~的更多相关文章

  1. 使用IConfigurationSectionHandler在web.config中增加自定义配置

    一. 场景    这里仅举一个简单应用的例子,我希望在web.config里面增加网站的基本信息,如:网站名称,网站版本号,是否将网站暂时关闭等.二. 基本实现方法1. 定义配置节点对应的类:Site ...

  2. (转).net webconfig使用IConfigurationSectionHandler自定section

    自定义配置结构 (使用IConfigurationSectionHandler) 假设有以下的配置信息,其在MyInfo可以重复许多次,那么应如何读取配置呢?这时就要使用自定义的配置程序了.<m ...

  3. IConfigurationSectionHandler 接口

    IConfigurationSectionHandler 处理对特定的配置节的访问. 示例代码: public class MyConfig : IConfigurationSectionHandle ...

  4. .Net——实现IConfigurationSectionHandler接口定义处理程序处理自己定义节点

    除了使用.net里面提供的内置处理程序来处理我们的自己定义节点外,我们还能够通过多种方法,来自己定义处理类处理我们的自己定义节点,本文主要介绍通过实现IConfigurationSectionHand ...

  5. .Net——实现IConfigurationSectionHandler接口定义处理程序处理自定义节点

    除了使用.net里面提供的内置处理程序来处理我们的自定义节点外,我们还可以通过多种方法,来自己定义处理类处理我们的自定义节点,本文主要介绍通过实现IConfigurationSectionHandle ...

  6. spring.net 框架分析(三)ContextRegistry.GetContext()

    我们通过ContextRegistry.GetContext()建立了一个IApplicationContext得实例,那么这个实例具体是怎么建立的了. 我们来分析一下容器实例建立的过程: 我们在配置 ...

  7. C# 自定义Section

    一.在App.config中自定义Section,这个使用了SectionGroup <?xml version="1.0" encoding="utf-8&quo ...

  8. Url路径重写的原理

    ASP.net的地址重写(URLRewriter)实现原理及代码示例 吴剑 2007-01-01 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 概述 访问 ...

  9. 第13章 .NET应用程序配置

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

随机推荐

  1. BZOJ2435——[Noi2011]道路修建

    1.题意:给个树,边的权值=两边的点数差*此边的长度,求所有边的权值和 2.分析:真不想说啥了...dfs即可 #include <cmath> #include <cstdio&g ...

  2. PYTHON 全局变量和局部变量

    #局部变量,只能调用函数体内的变量 def fun(): a = 234 print(a) #全局变量,在函数体外声明,在函数体内都可调用 b = 'gyc' def fun(): a = 234 p ...

  3. shell 脚本之获取命令输出字符串以及函数参数传递

    在ubuntu 14.04之后,所有的U盘挂载也分用户之分,最近很多操作也和U盘有关,所以就研究了一上午shell脚本函数以及字符串操作的方法. 字符串操作: 获取他的命令输出比较简单,打个简单的比方 ...

  4. 批处理命令——call 和 start

    一.call命令总结 [1]call命令简介 学过汇编或C的朋友,肯定都知道call指令表示什么意思.其实,在这里它的意思也是一样的.在批处理脚本中,call命令用来从一个批处理脚本中调用另一个批处理 ...

  5. node01-创建服务器

    node学习笔记目录:node01-创建服务器 node02-util node03-events node04-buffer node05-fs node06-path node07-http no ...

  6. jQuery 名称冲突

    jQuery 名称冲突 jQuery 使用 $ 符号作为 jQuery 的简介方式. 某些其他 JavaScript 库中的函数(比如 Prototype)同样使用 $ 符号. jQuery 使用名为 ...

  7. javascript的几种继承

    1.原型链继承:构造函数.原型和实例的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针.确认原型和实例之间的关系用instanceof. ...

  8. 摇一摇js 实现

    if (window.DeviceMotionEvent) { window.addEventListener('devicemotion',deviceMotionHandler, false); ...

  9. js未定义判断

    if (typeof(homeType) == 'undefined') { //..... //..... } typeof函数判断,如果未定义的就会返回undefined,注意undefined ...

  10. userdel 连同家目录一起删除

    userdel -r xxx 连同家目录一起删除