在vs2005的web site项目中读取web.config文件
任务:
读取下面xml中的某些信息(该XML从web.config中摘取):
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<configSections>
<section name="RemotingCompress" type="Confige.RemotingCompressSection, 程序集名称"
allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" restartOnExternalChanges="true"/>
</configSections>
<connectionStrings/>
<RemotingCompress CompressLevel="xuminrong" CompressCacheSize="79" UnCompressCacheSize="79" MinCompressSize="0"/>
<appSettings>
<!-- 数据库服务器名称 -->
<add key="TestConfiguate" value="这是一个测试"/>
</appSettings>
</configuration>
实现:
1:RemotingCompressSection 类:
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;
namespace Confige
{
public class RemotingCompressSection : System.Configuration.ConfigurationSection
{
[ConfigurationProperty("CompressLevel")]
public string CompressLevel
{
get
{
return (string)this["CompressLevel"];
}
set
{
this["CompressLevel"] = value;
}
}
[ConfigurationProperty("CompressCacheSize", DefaultValue = "40960", Options = ConfigurationPropertyOptions.None)]
public string CompressCacheSize
{
get
{
return (string)this["CompressCacheSize"];
}
set
{
this["CompressCacheSize"] = value;
}
}
[ConfigurationProperty("UnCompressCacheSize", DefaultValue = "40960", Options = ConfigurationPropertyOptions.None)]
public string UnCompressCacheSize
{
get
{
return (string)this["UnCompressCacheSize"];
}
set
{
this["UnCompressCacheSize"] = value;
}
}
}
}
2: 前台页面:_Default
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 Confige;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
RemotingCompressSection obj = new RemotingCompressSection();
Response.Write(obj.CompressLevel + obj.CompressCacheSize + obj.UnCompressCacheSize);
Response.WriteSystem.Configuration.ConfigurationSettings.AppSettings["TestConfiguate"]);
}
}
3:分析
1)RemotingCompressSection 类必须继承自System.Configuration.ConfigurationSection。
2)对<Add/>元素的读取,与1.1中没有什么改变。
3)注意大小写敏感。
4)关于定制特性ConfigurationProperty的问题:自己去查找相关资料。
5)<section name="RemotingCompress" type="Confige.RemotingCompressSection, 程序集名称" ...
解析:Confige.RemotingCompressSection:解析该配置文件的类名称
程序集名称:解析类所在的程序集的名称。
RemotingCompress:对应于<RemotingCompress/>元素,有点像元素声明。
4:疑问
1)找不到命名空间。
解决:要想要命名空间,自己加。
2)找不到程序集名称。
解决:至今没有解决。
参考文章:
http://xrinehart.cnblogs.com/archive/
(革新:NET20的自定义配置文件体系初探.doc)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构