如何在web.config中存储自定义对象

简介:

原文:http://www.codeproject.com/Articles/184716/How-to-store-custom-objects-in-web-config.aspx

如何在web.config中存储自定义对象

在本文中将要讨论web.config.在我平日里,都习惯把一些数据放在web.config的appSettings节里,当需要时再读取。

 

那都是string字符串的形式。当然了不止这些,我们也可以通过编程方式修改这些数据。

现在重要的一点需要说的是,我们也可以在web.config里存放自定义的类型,虽然通常情况不这么做。但是在很多情形

 

下,这样做很有用。

大家是否尝试过修改或者添加过web.config里的一些数值。我们先简单的讨论下这个:

首先,这些都是平常常见到的,把一些常量数据放在web.config的appSettings节,根据需要读取。那么怎么读呢(对初学者):

 

 
  1. //数据存放在web.config中形如: 
  2.  
  3. <appSettings> 
  4.  
  5.         <add key="WelcomeMessage" value="Hello All, Welcome to my Website." /> 
  6.  
  7. </appSettings> 
  8.  
  9.  
  10.  
  11. // 读取 
  12.  
  13. string message = ConfigurationManager.AppSettings["WelcomeMessage"]; 

 

现在,要是想要通过程序修改appSettings,我们可以这样做:

 

 
  1. //修改 
  2.  
  3.         Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); 
  4.  
  5.         config.AppSettings.Settings["WelcomeMessage"].Value = "Hello All, Welcome to my updated site."; 
  6.  
  7.         config.Save(); 

接着,如果想要在web.config里增加数据怎么做呢,如下:

 

 
  1. //增加 
  2.  
  3.         Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); 
  4.  
  5.         config.AppSettings.Settings.Add("ErrorMessage", "An error has been occured during processing  
  6.  
  7.  
  8.  
  9. this request."); 
  10.  
  11.         config.Save(); 

上面的代码是在web.config里新增新的键值对。现在我们可以在应用程序的任何地方读取它了。

现在,摆在面前的问题是,我们是否可以在配置里存储自定义的数据。

当然可以...

我们可以存储对象。让我们一起来看看怎么做。

我创建了一个样例程序。在这个例子中,我在web.config文件里保存了一个自定义的NewError类的一个对象实例。同时

 

当需要时对其进行修改。

请按照下面的步骤开始实现它:-)

a)创建一个继承自ConfigurationSection(该类在System.Configuration空间可以找到)的类。每个属性(Porperty)必

 

须有一个属性(attribute)ConfigurationProperty(带有属性名和一些参数,这个名字会直接映射到web.config),让我

 

们看下NewError类:

 

 
  1. public class NewError:ConfigurationSection 
  2.  
  3. { 
  4.  
  5.     //译注:每一个属性(Porperty:get,set的那玩意;-))都对应有个属性Attribute【[ConfigurationProperty 】 
  6.  
  7.     [ConfigurationProperty ("Id",IsRequired = true)] 
  8.  
  9.     public string ErrorId { 
  10.  
  11.         get { return (string)this["Id"]; } 
  12.  
  13.         set { this["Id"] = value; } 
  14.  
  15.     } 
  16.  
  17.     [ConfigurationProperty("Message", IsRequired = false)] 
  18.  
  19.     public string Message { 
  20.  
  21.         get { return (string)this["Message"]; } 
  22.  
  23.         set { this["Message"] = value; } 
  24.  
  25.     } 
  26.  
  27.     [ConfigurationProperty("RedirectURL", IsRequired = false)] 
  28.  
  29.     public string RedirectionPage 
  30.  
  31.     { 
  32.  
  33.         get { return (string)this["RedirectURL"]; } 
  34.  
  35.         set { this["RedirectURL"] = value; } 
  36.  
  37.     } 
  38.  
  39.     [ConfigurationProperty("MailId", IsRequired = false)] 
  40.  
  41.     public string EmailId 
  42.  
  43.     { 
  44.  
  45.         get { return (string)this["MailId"]; } 
  46.  
  47.         set { this["MailId"] = value; } 
  48.  
  49.     } 
  50.  
  51.     [ConfigurationProperty("DateAdded", IsRequired = false)] 
  52.  
  53.     public DateTime DateAdded 
  54.  
  55.     { 
  56.  
  57.         get { return (DateTime)this["DateAdded"]; } 
  58.  
  59.         set { this["DateAdded"] = value; } 
  60.  
  61.     } 
  62.  
  63. } 

和你看到的一样,每个属性有属性Configuration及一些值,比如属性ErrorId:

 

 
  1. [ConfigurationProperty ("Id",IsRequired = true)] 

意思是ErrorId在web.config里存为Id而且不可以缺少的必要字段。还有一些可选元素根据需要使用。

我们在深入看看这个属性,它有些不同:

 

 
  1. public string ErrorId { 
  2.  
  3. get { return (string)this["Id"]; } 
  4.  
  5. set { this["Id"] = value; } 
  6.  
  7. } 

在这里value值存为键"id",和web.config里对应。

b.)现在需要要做的就是在section组注册、添加一个section告诉web.config你需要这种类型数据。

必须放在<configSections />里如下:

 

 
  1. <section name="errorList"  type="NewError" allowLocation="true" 
  2.  
  3.      allowDefinition="Everywhere"/> 

c.)现在可以直接在配置文件里添加这样的对象了:

 

 
  1. <errorList Id="1" Message="ErrorMessage" RedirectURL="www.google.com" MailId="xyz@hotmail.com"  
  2.  
  3.  
  4.  
  5. ></errorList> 

d.)然后在你的页面这样读取:

NewError objNewError = (NewError)ConfigurationManager.GetSection("errorList");

也可以通过程序方式保存一个新对象:

 

 
  1. NewError objNewError = new NewError() 
  2.  
  3.         { 
  4.  
  5.           RedirectionPage="www.rediff.com", 
  6.  
  7.           Message = "New Message", 
  8.  
  9.           ErrorId="0", 
  10.  
  11.           DateAdded= DateTime.Now.Date 
  12.  
  13.         }; 
  14.  
  15.         Configuration config = 
  16.  
  17.             WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); 
  18.  
  19.  
  20.  
  21.         config.Sections.Add("errorList", objNewError); 
  22.  
  23.         config.Save(); 

甚至可以添加一个自定义的组,然后在此section区放置一些自定义元素。

Asp.net提供给我们非常强大的编程接口API,我们可以很轻松的读取/编辑web.config文件。

最后希望您心情愉悦的浏览此文,也非常感激您的回馈信息。

Thanks.




 本文转自 xcf007 51CTO博客,原文链接:http://blog.51cto.com/xcf007/563076,如需转载请自行联系原作者

相关文章
|
存储 Web App开发 移动开发
HTML5 Web 存储详解
HTML5 Web存储提供了两种客户端数据存储机制:**Local Storage**和**Session Storage**。Local Storage用于长期存储数据,即使关闭浏览器数据也依然存在,适用于保存用户偏好设置等信息。Session Storage则在标签或窗口关闭时清除数据,适合存储临时信息。两者均提供了简单的API进行数据的存取操作,但需要注意的是,Web存储并非加密存储,不应存放敏感信息。现代浏览器普遍支持Web存储,合理利用这两种存储方式可提升Web应用的用户体验。
|
安全 前端开发 API
【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
476 4
|
前端开发 开发者
new操作符背后的秘密:揭开Web前端对象创建的神秘面纱!
【8月更文挑战第23天】在Web前端开发中,`new`操作符是创建对象实例的核心。本文以`Person`构造函数为例,通过四个步骤解析`new`操作符的工作原理:创建空对象、设置新对象原型、执行构造函数并调整`this`指向、判断并返回最终对象。了解这些有助于开发者更好地理解对象实例化过程,从而编写出更规范、易维护的代码。
308 0
|
存储 JSON JavaScript
WEB CAD插件通过上下文对象MxPluginContext修改UI界面的方法
本文介绍了如何使用MxPluginContext动态控制MxCAD项目的UI界面。通过该上下文对象,开发者可以灵活设置UI配置,如控制操作栏显隐、编辑按钮、添加侧边栏等。具体方法包括调用`getUiConfig()`获取并修改`mxUiConfig.json`中的属性,实现界面的定制化。此外,还提供了控制命令行聚焦的功能,解决输入框焦点锁定问题。详细代码示例和效果对比图展示了具体实现步骤,帮助开发者更好地适配项目需求。
|
存储 缓存 前端开发
Web应用中的存储方式有哪些?
本文首发于微信公众号“前端徐徐”,介绍了几种常见的前端数据存储技术:Cookie、Web Storage(包括 localStorage 和 sessionStorage)、IndexedDB、Cache Storage 和 Memory Storage。每种技术的特点和使用场景不同,适用于不同的开发需求。文章详细解释了它们的使用方法、特点和应用场景,并提供了代码示例。
2234 2
Web应用中的存储方式有哪些?
|
存储 移动开发 缓存
HTML5 Web 存储详解
HTML5 Web 存储包括 `localStorage` 和 `sessionStorage`,前者提供持久存储且无过期时间,后者仅在会话期间有效。两者均支持键值对形式存储数据,容量约为 5-10 MB。`localStorage` 适用于用户偏好设置、登录状态保持及离线应用缓存;`sessionStorage` 则用于临时数据如表单输入。数据以字符串形式存储,可通过 `JSON` 方法处理对象。由于数据存储于本地,不适合存放敏感信息。示例代码展示了如何使用按钮将输入框内容保存至 `localStorage` 并进行清除操作。
|
XML JavaScript 测试技术
Web自动化测试框架(基础篇)--HTML页面元素和DOM对象
本文为Web自动化测试入门指南,介绍了HTML页面元素和DOM对象的基础知识,以及如何使用Python中的Selenium WebDriver进行元素定位、操作和等待机制,旨在帮助初学者理解Web自动化测试中的关键概念和操作技巧。
433 1
|
开发框架 JSON 前端开发
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
|
存储 前端开发 API
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
746 0
service方法的介绍,及如何将config对象如何提升作用域
service方法的介绍,及如何将config对象如何提升作用域

热门文章

最新文章