ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如,

 <appSettings>
<add key="LogInfoProvider" value="Cookie" />//登录信息保存方式
</appSettings>

但是这些配置都是单个字符串信息,在某些情况下,无法做到灵活配置。

针对这种情况,使用.Net Framework提供的自定义系统配置方式来进行改善。自定义系统配置方式主要使用到以下几个类:

ConfigurationManager:通过该类能够直接获取Web.config的信息。

ConfigurationSection:表示配置文件中的一个配置节的信息。

ConfigurationElement:表示配置节中的单个配置项信息。

ConfigurationElementCollection:表示配置项的集合信息。

ConfigurationPropertyAttribute:对配置信息一些约束信息。

使用自定义配置信息,必须现在web.config配置文件的顶部进行配置声明,否则系统无法识别该配置信息。如下所示:

 <configuration>
<configSections>
<section name="TT.appConfiguration" type="TT.Infrastructure.Core.CustomConfiguration.ApplicationConfiguration, TT.Infrastructure.Core" />
<section name="TT.connectionManager" type="TT.Infrastructure.Core.CustomConfiguration.DBConnectionConfiguration, TT.Infrastructure.Core" />
</configSections>
<TT.appConfiguration appCode="Location_Management" appName="库位管理系统"/>
<TT.connectionManager>
……
</TT.connectionManager>
……
<configuration>

在知道需要配置什么样的信息后,就需要定义读取配置的实体类信息,本文以ApplicationConfiguration的建立为例,逐步展开。

1)         创建ApplicationConfiguration类,并指定该配置的配置节名称,使用ConfigurationManager.GetSection(SECION_NAME)方法就能够读取到该配置,并将该信息强制转换为ApplicationConfiguration类即可。

 /// <summary>
/// 程序配置信息
/// </summary>
public class ApplicationConfiguration : ConfigurationSection
{
private const string SECTION_NAME = "TT.appConfiguration"; /// <summary>
/// 获取程序配置信息
/// </summary>
/// <returns></returns>
public static ApplicationConfiguration GetConfig()
{
ApplicationConfiguration config = ConfigurationManager.GetSection(SECTION_NAME) as ApplicationConfiguration;
return config;
}
}

2)         定义自定义配置的属性信息,并使用ConfigurationPropertyAttribute对属性进行约束。约束的信息主要包括:配置节名称Name、是否必须IsRequired、默认值DefaultValue等。

 /// <summary>
/// 应用系统代码
/// </summary>
[ConfigurationProperty("appCode", IsRequired = false, DefaultValue = "")]
public string AppCode
{
get
{
return (string)this["appCode"];
}
} /// <summary>
/// 应用系统名称
/// </summary>
[ConfigurationProperty("appName", IsRequired = false, DefaultValue = "")]
public string AppName
{
get
{
return (string)this["appName"];
}
}

3)         自定义配置信息的获取。

 var appCode = ApplicationConfiguration.GetConfig().AppCode;
var appName = ApplicationConfiguration.GetConfig().AppName;

使用以上方法就可以读取自定义配置信息,并在程序中使用。

ASP.NET MVC 学习笔记-7.自定义配置信息的更多相关文章

  1. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  2. ASP.NET MVC 学习笔记-7.自定义配置信息(后续)

    自定义配置信息的高级应用 通过上篇博文对简单的自定义配置信息的学习,使得更加灵活的控制系统配置信息.实际项目中,这种配置的灵活度往往无法满足项目的灵活度和扩展性. 比如,一个配置信息有三部分组成,而每 ...

  3. ASP.NET MVC学习笔记-----使用自定义的View Engine

    我们都知道在ASP.NET MVC中自带了Razor View Engine,Razor十分的强大,可以满足我们绝大部分的需要.但是ASP.NET MVC的高度可扩展性,使我们可以使用自定义的View ...

  4. ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现

    ASP.NET MVC 学习笔记-2.Razor语法   1.         表达式 表达式必须跟在“@”符号之后, 2.         代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...

  5. ASP.NET MVC学习笔记-----Filter2

    ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...

  6. ASP.NET MVC学习笔记-----Filter

    ASP.NET MVC学习笔记-----Filter(1) Filter类型 接口 MVC的默认实现 Description Authorization IAuthorizationFilter Au ...

  7. ASP.NET MVC学习笔记-----Filter(2)

    接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用,它需要实现IActionFilter接口: public ...

  8. ASP.NET MVC学习笔记-----ControllerFactory

    上面这张图是asp.net mvc的工作流程图,我们可以看到当一个http请求来临时,首先需要经过路由系统,路由系统从中获取一些路由信息,然后ControllerFactory根据所得到的路由信息生成 ...

  9. ASP.NET MVC学习笔记-----ActionInvoker

    还是这张图: 当ControllerFactory生成Controller实例后,这时就需要使用ActionInvoker来选择调用一个合适的Action执行.ASP.NET MVC提供的基类Cont ...

随机推荐

  1. QT汇总

    1.QT介绍及其在Linux下的安装 2.windows下安装QT并与visual studio 2017搭建开发环境 参考资料: QT官网资料 QT实战一二三 Qt资料大全 <Qt 实战一二三 ...

  2. B - Big Event in HDU

    Nowadays, we all know that Computer College is the biggest department in HDU. But, maybe you don't k ...

  3. CLion之C++框架篇-优化开源框架,引入curl,实现get方式获取资源(四)

      背景   结合上一篇CLion之C++框架篇-优化框架,引入boost(三),继续进行框架优化!在项目中,我们经常会通过get方式拉取第三方资源,这一版优化引入类库curl,用来拉取第三方资源库. ...

  4. 目标检测算法(1)目标检测中的问题描述和R-CNN算法

    目标检测(object detection)是计算机视觉中非常具有挑战性的一项工作,一方面它是其他很多后续视觉任务的基础,另一方面目标检测不仅需要预测区域,还要进行分类,因此问题更加复杂.最近的5年使 ...

  5. eclipse运行spark程序时日志颜色为黑色的解决办法

    自从开始学习spark计算框架以来,我们老师教的是local模式下用eclipse运行spark程序,然后我在运行spark程序时,发现控制台的日志颜色总是显示为黑色,哇,作为程序猿总有一种强迫症,发 ...

  6. Javascript高级编程学习笔记(44)—— 动态样式

    动态样式 动态样式和昨天的动态脚本一样,都是一种动态引入外部样式(脚本的方式) 由于样式是由 link 元素引入的,所以动态样式自然也就是动态生成link元素插入文档的方式 不过和动态脚本不同的是,动 ...

  7. HTML5与CSS3权威指南笔记案例1

    第1章 <!DOCTYPE html> <meta charset = "UTF-8"> <title> Search </title&g ...

  8. pycharm删除project

    1 在pycharm里面选择关闭project 2 返回到这个页面,然后点×让project不在project列表显示(最好记住project的位置) 3 到源文件夹删除这个project文件夹 大功 ...

  9. Python - GUI(Graphical User Interface,图形用户界面)

    Tkinter https://docs.python.org/3/library/tkinter.html Python自带的标准GUI库,可用于快速创建GUI应用程序,能够满足基本的GUI程序要求 ...

  10. Java虚拟机知识汇总

    先膜一波布丁大佬hhh