通过Web.config中的configSections配置自己系统的全局常量

随着系统的庞大,你的全局信息保存在appsitting里可能会比较乱,不如为模块写个自定义的全局常量吧

首先在Web.Config文件中的代码可能是这样:
<configuration>
<configSections>
<section name="MyConfig" type="My.Core.Configuration.MyConfig, My.Core" requirePermission="false" />
</configSections>

<MyConfig>
<DynamicDiscovery Enabled="true" />
<Engine Type="" />
<Themes basePath="~/Themes/" />
<UserAgentStrings databasePath="~/App_Data/uas_20140512-01.ini" />
</MyConfig>
</configuration>

而YipongConfig可能是这样:
public object Create(object parent, object configContext, XmlNode section)
{
var config = new YipongConfig();
var dynamicDiscoveryNode = section.SelectSingleNode("DynamicDiscovery");
if (dynamicDiscoveryNode != null && dynamicDiscoveryNode.Attributes != null)
{
var attribute = dynamicDiscoveryNode.Attributes["Enabled"];
if (attribute != null)
config.DynamicDiscovery = Convert.ToBoolean(attribute.Value);
}

var engineNode = section.SelectSingleNode("Engine");
if (engineNode != null && engineNode.Attributes != null)
{
var attribute = engineNode.Attributes["Type"];
if (attribute != null)
config.EngineType = attribute.Value;
}

var startupNode = section.SelectSingleNode("Startup");
if (startupNode != null && startupNode.Attributes != null)
{
var attribute = startupNode.Attributes["IgnoreStartupTasks"];
if (attribute != null)
config.IgnoreStartupTasks = Convert.ToBoolean(attribute.Value);
}

var themeNode = section.SelectSingleNode("Themes");
if (themeNode != null && themeNode.Attributes != null)
{
var attribute = themeNode.Attributes["basePath"];
if (attribute != null)
config.ThemeBasePath = attribute.Value;
}

var userAgentStringsNode = section.SelectSingleNode("UserAgentStrings");
if (userAgentStringsNode != null && userAgentStringsNode.Attributes != null)
{
var attribute = userAgentStringsNode.Attributes["databasePath"];
if (attribute != null)
config.UserAgentStringsPath = attribute.Value;
}

return config;
}

/// <summary>
/// In addition to configured assemblies examine and load assemblies in the bin directory.
/// </summary>
public bool DynamicDiscovery { get; private set; }

/// <summary>
/// A custom <see cref="IEngine"/> to manage the application instead of the default.
/// </summary>
public string EngineType { get; private set; }

/// <summary>
/// Specifices where the themes will be stored (~/Themes/)
/// </summary>
public string ThemeBasePath { get; private set; }

/// <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; }
}

调用就可以这样:
string myWebSiteName = ((NameValueCollection)ConfigurationSettings.GetConfig("SiteConfig"))["SiteName"];

通过Web.config中的configSections配置自己系统的全局常量的更多相关文章

  1. [转]通过继承ConfigurationSection,在web.config中增加自定义配置

    本文转自:http://www.blue1000.com/bkhtml/2008-02/55810.htm 前几天写了一篇使用IConfigurationSectionHandler在web.conf ...

  2. 释放SQL Server占用的内存 .Net 读取xml UrlReWriter 在web.config中简单的配置

    释放SQL Server占用的内存   由于Sql Server对于系统内存的管理策略是有多少占多少,除非系统内存不够用了(大约到剩余内存为4M左右),Sql Server才会释放一点点内存.所以很多 ...

  3. 加密web.config中的邮件配置mailSettings

    加密: 在命令提示符下键入: aspnet_regiis -pef connectionStrings 要加密的web.config完整路经 演示样例:C:\Program Files (x86)\M ...

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

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

  5. ASP.NET,web.config 中SessionState的配置

    web Form 网页是基于HTTP的,它们没有状态, 这意味着它们不知道所有的请求是否来自同一台客户端计算机,网页是受到了破坏,以及是否得到了刷新,这样就可能造成信息的丢失. 于是, 状态管理就成了 ...

  6. web.config中namespace的配置(针对页面中引用)

    1,在页面中使用强类型时: @model GZUAboutModel @using Nop.Admin.Models//命名空间(注意以下) 2,可以将命名空间提到web.config配置文件中去,此 ...

  7. .Net高级编程-自定义错误页 web.config中<customErrors>节点配置

    错误页 1.当页面发生错误的时候,ASP.Net会将错误信息展示出来(Sqlconnection的错误就能暴露连接字符串),这样一来不好看,二来泄露网站的内部实现信息,给网站带来安全隐患,因此需要定制 ...

  8. [转]WinForm和WebForm下读取app.config web.config 中邮件配置的方法

    本文转自:http://blog.csdn.net/jinbinhan/article/details/1598386 1. 在WinForm下读取 App.config中的邮件配置语句如下: Con ...

  9. web.config中authorization下的location中的path的设置 (转)

    项目下 有三个文件夹 A,B,C 验正方式是 Forms 验正 我要设置他们的访问权限为, A,匿名可访问 B,普通用户授权后才能访问 C,只允许管理员访问 <configuration> ...

随机推荐

  1. boost库的使用(一)

    参考http://www.cnblogs.com/lexus/archive/2012/07/15/2592250.html bjam stage --without-python --toolset ...

  2. css网站导航-菜单

    一个简单的网站导航效果: 效果案例:查看演示 css: ;;;} body{font-family: arial, 宋体, serif;font-size: 12px;} .menu{width:11 ...

  3. 【Java基础】基本类型的包装类作为参数传递是值传递还是引用传递

    突然想到这个问题,然后做了下实验,下面以Integer来讲解,其他的忽略: import java.util.Iterator; /** * Created by lili on 15/9/24. * ...

  4. Codeforces126B - Password(KMP)

    题目大意 给定一个字符串S,要求你找到一个最长的子串,它既是S的前缀,也是S的后缀,并且在S的内部也出现过(非端点) 题解 KMP的失配函数f[i]的非零值就是前i个字符的一个最长前缀且也是后缀的字符 ...

  5. ios中view的生命周期

  6. IE-“无法浏览网页” 教你十招解决疑难杂症

    “无法浏览网页” 教你十招解决疑难杂症 相信大家也有遇到过像IE不能上网浏览的问题.下面就来给大家介绍一下常见原因和解决方法: 一.网络设置的问题 这种原因比较多出现在需要手动指定IP.网关.DNS服 ...

  7. JavaScript- The Good Parts Chapter 5 Inheritance

    Divides one thing entire to many objects;Like perspectives, which rightly gazed uponShow nothing but ...

  8. oracle命令行操作

    exp zdxk/zdxk@ORCL TABLES=(ms_data_dictory_def,ms_static_data_def) file=c:\staticdata.dmp 通过输入 EXP 命 ...

  9. IBOutlet & IBAction

    IBOutlet UILabel *label; 这个label在Interface Builder里被连接到一个UILabel.此时,这个label的retainCount为2. 所以,只要使用了I ...

  10. jQuery事件绑定的最佳实践

    如果你经常使用jQuery,那么你也许很熟悉事件绑定.这是很基本的东西,但是深入一点,你就能够找到机会让你事件驱动的代码变得不太零碎,并且更容易管理. 更好的选择器策略 让我们从基础的例子开始.下面的 ...