.Net 自定义应用程序配置 configSections

简介:
参考:
http://www.cnblogs.com/wzh206/archive/2013/05/13/3076495.html

 

 web.config配置代码

 

复制代码
<? xml version="1.0" encoding="utf-8" ?>

<!--
  有关如何配置 ASP.NET 应用程序的详细消息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
  
-->

< configuration >
     < configSections >
         < section  name ="mailServerGroup"  type ="configSectionsDemo.Config.MailServerConfigurationHandler, configSectionsDemo, Version=1.0.0.0, Culture=neutral"    />
     </ configSections >
     < mailServerGroup  provider ="www.edong.com" >
         < mailServer  client ="forum.tracefact.net" >
             < address >mail1.tracefact.net </ address >
             < userName >jimmyzhang </ userName >
             < password >123456 </ password >
         </ mailServer >
         < mailServer  client ="blog.tracefact.com" >
             < address >mail2.tracefact.net </ address >
             < userName >webmaster </ userName >
             < password >456789 </ password >
         </ mailServer >
     </ mailServerGroup >
     < system.web >
         < compilation  debug ="true"  targetFramework ="4.0"   />
     </ system.web >

</ configuration >
复制代码

 

 类代码

 

MailServer

 

 

复制代码
using System.Collections;

namespace configSectionsDemo.Config
{
     public  class MailServer
    {

         //  存储mailServer的子结点(Address,UserName,Password)的innerText值
        
//  以及属性 Client 的值
         private Hashtable serverNode;

         public MailServer()
        {
            serverNode =  new Hashtable();
        }

         public Hashtable ServerNode
        {
             get {  return serverNode; }
        }

         public  string Client
        {
             get {  return serverNode[ " client "as  string; }
        }

         public  string Address
        {
             get {  return serverNode[ " address "as  string; }
        }

         public  string UserName
        {
             get {  return serverNode[ " userName "as  string; }
        }

         public  string Password
        {
             get {  return serverNode[ " password "as  string; }
        }
    }
}
复制代码

 

MailServerConfig

 

 

复制代码
using System.Collections.Generic;

namespace configSectionsDemo.Config
{
     public  class MailServerConfig : List<MailServer>
    {
         private  string provider;      //  对应 mailServerGroup 结点的provider 属性
         public  string Provider
        {
             get {  return provider; }
             set { provider = value; }
        }
    }
}
复制代码

 

MailServerConfigurationHandler

 

复制代码
using System.Configuration;
using System.Xml;

namespace configSectionsDemo.Config
{
     //  自定义配置结点 mailServerGroup 的处理程序
     public  class MailServerConfigurationHandler : IConfigurationSectionHandler
    {

         //  section 为 MailServerGroup 结点
         public  object Create( object parent,  object configContext, XmlNode section)
        {

             //  设置方法返回的配置对象,可以是任何类型
            MailServerConfig config =  new MailServerConfig();

             //  获取结点的属性信息       
            config.Provider =
                section.Attributes[ " provider "] ==  null ?  "" : section.Attributes[ " provider "].Value;

             //  获取 MailServer 结点
             foreach (XmlNode child  in section.ChildNodes)
            {

                MailServer server =  new MailServer();

                 //  添加Client属性
                 if (child.Attributes[ " client "] !=  null)
                    server.ServerNode.Add( " client ", child.Attributes[ " client "].Value);

                 //  获取MailServer下的 Name,UserName,Password 结点
                 foreach (XmlNode grandChild  in child.ChildNodes)
                {

                     //  添加文本
                    server.ServerNode.Add(grandChild.Name, grandChild.InnerText);
                }

                 //  将server加入 MailServerConfig
                config.Add(server);
            }
             return config;
        }
    }
}
复制代码

页面代码 

aspx

 

复制代码
<% @ Page Language = " C# "  AutoEventWireup = " true "  CodeBehind = " WebForm1.aspx.cs "  Inherits = " configSectionsTest.WebForm1 "   %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html  xmlns ="http://www.w3.org/1999/xhtml" >
< head  runat ="server" >
     < title ></ title >
</ head >
< body >
     < form  id ="form1"  runat ="server" >
     < div >
         < h1 >
            使用 自定义结点 和 自定义处理程序 </ h1 >
         < b >MailServerGroup Provider </ b >:
         < asp:Literal  ID ="ltrServerProvider"  runat ="server" ></ asp:Literal >
         < h2 >
            Mail Server1(Client: < asp:Literal  ID ="ltrClient1"  runat ="server" ></ asp:Literal >) Information: </ h2 >
         < hr  />
         < b >Address </ b >:
         < asp:Literal  ID ="ltrAddress1"  runat ="server" ></ asp:Literal >
         < br  />
         < b >UserName </ b >:
         < asp:Literal  ID ="ltrUserName1"  runat ="server" ></ asp:Literal >< br  />
         < b >Password </ b >:
         < asp:Literal  ID ="ltrPassword1"  runat ="server" ></ asp:Literal >
         < h2 >
            Mail Server2(Client: < asp:Literal  ID ="ltrClient2"  runat ="server" ></ asp:Literal >) Information: </ h2 >
         < hr  />
         < b >Address </ b >:
         < asp:Literal  ID ="ltrAddress2"  runat ="server" ></ asp:Literal >
         < br  />
         < b >UserName </ b >:
         < asp:Literal  ID ="ltrUserName2"  runat ="server" ></ asp:Literal >< br  />
         < b >Password </ b >:
         < asp:Literal  ID ="ltrPassword2"  runat ="server" ></ asp:Literal >
         < br  />
         < br  />
     </ div >
     </ form >
</ body >
</ html >
复制代码

页面后端代码

 

复制代码
using System;
using System.Configuration;
using configSectionsDemo.Config;

namespace configSectionsTest
{
     public  partial  class WebForm1 : System.Web.UI.Page
    {
         //  SimpleCustom.aspx.cs
         protected  void Page_Load( object sender, EventArgs e)
        {
             //  获取 mailServerConfig 对象
            MailServerConfig mailConfig = (MailServerConfig)ConfigurationManager.GetSection( " mailServerGroup ");

             //  获取 MailServerGroup 结点的 Provider 属性
            ltrServerProvider.Text = mailConfig.Provider;

             //  获取第一租 MailServer 数据
            ltrClient1.Text = mailConfig[ 0].Client;
            ltrAddress1.Text = mailConfig[ 0].Address;
            ltrUserName1.Text = mailConfig[ 0].UserName;
            ltrPassword1.Text = mailConfig[ 0].Password;

             //  获取第二租 MailServer 数据
            ltrClient2.Text = mailConfig[ 1].Client;
            ltrAddress2.Text = mailConfig[ 1].Address;
            ltrUserName2.Text = mailConfig[ 1].UserName;
            ltrPassword2.Text = mailConfig[ 1].Password;
        }
    }
}
复制代码

 

也是为了方便阅读参考,特简单摘录在此。代码一看就明白。

 

附上demo源码吧 ,一调试就明了。

http://files.cnblogs.com/yelaiju/configSectionsDemo.rar

 

本文转自火地晋博客园博客,原文链接:http://www.cnblogs.com/yelaiju/archive/2013/05/15/3080909.html,如需转载请自行联系原作者


目录
相关文章
|
存储 Shell Linux
快速上手基于 BaGet 的脚本自动化构建 .net 应用打包
本文介绍了如何使用脚本自动化构建 `.net` 应用的 `nuget` 包并推送到指定服务仓库。首先概述了 `BaGet`——一个开源、轻量级且高性能的 `NuGet` 服务器,支持多种存储后端及配置选项。接着详细描述了 `BaGet` 的安装、配置及使用方法,并提供了 `PowerShell` 和 `Bash` 脚本实例,用于自动化推送 `.nupkg` 文件。最后总结了 `BaGet` 的优势及其在实际部署中的便捷性。
1020 10
|
9月前
|
开发框架 .NET C#
ASP.NET Core Blazor 路由配置和导航
大家好,我是码农刚子。本文系统介绍Blazor单页应用的路由机制,涵盖基础配置、路由参数、编程式导航及高级功能。通过@page指令定义路由,支持参数约束、可选参数与通配符捕获,结合NavigationManager实现页面跳转与参数传递,并演示用户管理、产品展示等典型场景,全面掌握Blazor路由从入门到实战的完整方案。
676 6
|
JSON 数据格式
【Azure Fabric Service】演示使用PowerShell命令部署SF应用程序(.NET)
本文详细介绍了在中国区微软云Azure上使用Service Fabrics服务时,通过PowerShell命令发布.NET应用的全过程。由于Visual Studio 2022无法直接发布应用,需借助PowerShell脚本完成部署。文章分三步讲解:首先在Visual Studio 2022中打包应用部署包,其次连接SF集群并上传部署包,最后注册应用类型、创建实例并启动服务。过程中涉及关键参数如服务器证书指纹和服务端证书指纹的获取,并附带图文说明,便于操作。参考官方文档,帮助用户成功部署并运行服务。
462 73
|
C# Android开发 iOS开发
2025年全面的.NET跨平台应用框架推荐
2025年全面的.NET跨平台应用框架推荐
862 23
|
JSON 安全 API
.net 自定义日志类
在.NET中,创建自定义日志类有助于更好地管理日志信息。示例展示了如何创建、配置和使用日志记录功能,包括写入日志文件、设置日志级别、格式化消息等。注意事项涵盖时间戳、日志级别、JSON序列化、线程安全、日志格式、文件处理及示例使用。请根据需求调整代码。
318 13
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
443 5
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
497 9
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
698 2
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
588 2
|
数据采集 JSON API
.NET 3.5 中 HttpWebRequest 的核心用法及应用
【9月更文挑战第7天】在.NET 3.5环境下,HttpWebRequest 类是处理HTTP请求的一个核心组件,它封装了HTTP协议的细节,使得开发者可以方便地发送HTTP请求并接收响应。本文将详细介绍HttpWebRequest的核心用法及其实战应用。
906 6