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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端