读取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. Java Native Interfce三在JNI中使用Java类的普通方法与变量

    本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 前面我们学习了如何在JNI中通过参数来使用J ...

  2. androi手机解锁引导程序

    1.重启手机进入fastboot模式  一般关机状态下按手机音量减+开机键,成功后会显示fastboot字提示. 2.查看设备信息 fastboot devices 说明:fastboot是一个工具软 ...

  3. html5新增标签及兼容

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Odd Even Linked List

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  5. windows 8下配置PLSQLDeveloper

    Win 8 64位系统上安装64 位Oracle,但是没有64位的PL/SQL,不能连接Oracle数据库,怎么办呢?方法是有的:我们可以通过安装32位的Oracle客户端来实现连接. 工具/原料 P ...

  6. Markdown 文档格式编写语法

    http://www.cnblogs.com/cxf520/p/6179294.html

  7. 工欲善其事-Eclipse设置

    1.注释设置 [重要可以保存使用] 在菜单栏Window--->Preferences--->Java--->Code Style--->Code Templates然后展示C ...

  8. 在ASP.NET MVC项目中使用React

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:最近在开发钉钉的微应用,考虑到性能和UI库的支持,遂采用了React来开发前端. 目前 ...

  9. Android真机调试 Android.Util.AndroidRuntimeException: You cannot combine custom titles with other title features

    参考连接:http://blog.csdn.net/scyatcs/article/details/9003285 Android.Util.AndroidRuntimeException: You ...

  10. 享元模式/Flyweight模式/对象结构型/设计模式

    flyweight 享元模式(对象结构型) Flyweight在拳击比赛中指最轻量级,即"蝇量级"或"雨量级",这里选择使用"享元模式"的意 ...