Custom Configuration Sections

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Custom Configuration Sections</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <h1>Custom Configuration Sections</h1>
       <asp:Label ID="lblTime" runat="server" />
       <br />
       <asp:Label ID="lblTest" runat="server" />
       <br />
       <asp:Label ID="lblContent" runat="server" />
       <br />
      
       <asp:GridView ID="gv" runat="server" />
   
    </div>
    </form>
</body>
</html>

File: Default.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       lblTime.Text = "Posted at " + DateTime.Now.ToLongTimeString();
       if (!IsPostBack)
       {
          string strTest;
          strTest = ((Hashtable)ConfigurationManager.GetSection("altDB"))["Test"].ToString();
          lblTest.Text = strTest;

          lblContent.Text = ((Hashtable)ConfigurationManager.GetSection("altDB"))["Content"].ToString();

          CreateGrid();
       }
    }

   private void CreateGrid()
   {
      DataSet dsGrid = new DataSet();
      dsGrid = (DataSet)ConfigurationManager.GetSection("system.web/DataSetSectionHandler");
      gv.DataSource = dsGrid.Tables[0];
      gv.DataBind();
   }
}

File: SectionHandlers.cs

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public class DataSetSectionHandler : IConfigurationSectionHandler
{
   public Object Create(Object parent,Object configContext,System.Xml.XmlNode section)
   {
      string strSql;
      strSql = section.Attributes.Item(0).Value;

      string connectionString = "server=Local; uid=sa; pwd=password; database=Northwind";

      SqlDataAdapter da = new SqlDataAdapter(strSql,connectionString);

      DataSet dsData = new DataSet();

      da.Fill(dsData, "Customers");

      return dsData;
   }
}

File: Web.Config

<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <configSections>
    <section name="altDB" type="System.Configuration.DictionarySectionHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <sectionGroup name="system.web">
      <section name="DataSetSectionHandler" type="DataSetSectionHandler,SectionHandlers" />
    </sectionGroup>
  </configSections>

  <altDB>
    <add key="Test" value=" SERVER=MyServer;DATABASE=Test;UID=myID;PWD=secret;" />
    <add key="Content" value=" SERVER=MyServer;DATABASE=Content;UID=myID;PWD=secret;" />
  </altDB>

  <appSettings/>
  <connectionStrings/>
 
  <system.web>
    <compilation debug="true"/>
    <authentication mode="Windows" />
    <DataSetSectionHandler  str="Select CompanyName,ContactName,City from Customers"  />
  </system.web>
</configuration>
 

posted @   架构师聊技术  阅读(170)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示