Web.config 文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置 更多。XmlSerilize 是序列化所需要用到的类,应用程序在底层传输数据都用的是XML传输的 通过序列化可以将对象数据集数组等序列化为 XML反射Reflection 可以将编译好的dll文件里面的方法 属性等显示出来方便你在引用的时候调用方法
刚接触到
using System.Reflection;
private void Form1_Load(object sender, EventArgs e)
{
UserModel m = Test<UserModel>();
m.ID = 123;
m.Name = "gcy";
Type t = m.GetType();
PropertyInfo[] pts = t.GetProperties();
for (int i = 0; i < pts.Length; i++)
{
PropertyInfo pi = pts[i];
MessageBox.Show(pi.Name);
MessageBox.Show(pi.PropertyType.ToString());
MessageBox.Show(pi.GetValue(m, null).ToString());
}
} private t Test<t>()
{
t obj = Activator.CreateInstance<t>();
return obj;
//ConstructorInfo ct = t.GetConstructor(System.Type.EmptyTypes);
//return ct.Invoke(null);
}
采用反射技术和XML的通用实体类
{
//...
};class AccessOp : DBOperation
{
//...
};class SqlServerOp : DBOperation
{
//...
}使用的时候DBOperation db = new AccessOp();
或者
DBOperation db = new SqlServerOp();如果配置文件里面能够读到用于区分这两者的字符串:
string dbType = ...; // 读配置文件那么就可以根据 dbType 来选择上面的类了
撇开 .Net 的反射,可以
if (dbType == "SqlServerOp")
{
DBOperation db = new SqlServerOp();
}
else if (dbType == "AccessOp")
{
DBOperation db = new AccessOp();
}
else
{
//Error
}
配置文件中的内容就达到了“控制程序”的目的。进而如果把反射用上去,上面那段程序就可以从 10 来行缩为一行,类似:DBOperation db = Activator.CreateInstance(Type.GetType(dbType));
其实个人觉得 web.config 充其量也只是个配置文件而已,从实质上来说和以往的 ini、注册表项等都没什么两样
但是因为配置项比较多,反射机制也应用得淋漓尽致,所以显得复杂了。对于这种复杂的配置文件,个人的观点是不看好。但是我们没有不看好的权利。
2.配置文件不一定是web.config,他可以是任何类型的文件,比如xml,txt,ini,cvs,dat,mdb只要你能很方便的读写和修改他们
3.配置文件可以是任何类型,任何格式的文件,但是你的程序要能很方便的访问和改写里面的元数据,这就要求你有合理的数据存储和查询结构
如果元数据是:
中国----》湖北|||武汉:武昌
这样的格式,你认为你能很容易的访问他们吗?所以程序员们为了访问的方便就自己设计了很多容易读取的格式:比如早期的 以固定字符做分割的cvs文件,后来的ini文件,现在的xml文件4.为了能更容易的访问和读写配置文件,除了需要程序员设计出合理的配置文件格式以外,聪明的,睿智的,偷懒的程序员们又自己设计了各种各样的能在自己的代码里方便读取的代码类,但是偷懒的程序员觉得,为啥不能有一些通用的,一劳永逸的方法呢?于是他们使用特性,把需要配置的东西标明出来,然后使用序列化,让序列化代码自己去生成配置文件,同时有可以反序列化成为原来的对象。这样不是方便了很多---------(在这里让我向那些充满创造性并且会偷懒的前辈们致敬)
"private t Test <t>() " 前面 的 t 是 啥意思 ?不解 。。是不是 class 写 错 了 。。正在 研究 。net 框架 ,序列化 跟楼主 同样 求 多 解。。
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,就使得数据能够被轻松地存储和传输。
序列化简单点来理解就是把内存的东西写到硬盘中,当然也可以写到内存中(这个内容我会在后面写一个例子).而反序列化就是从硬盘中把信息读到内存中.就这么简单,呵呵。
序列化和反序列化用于将一个对象保存到文件,从文件读取
http://www.cnblogs.com/lsmsky/category/120048.html
http://www.cnblogs.com/barebird/archive/2008/07/24/1250916.html
如果一个软件出现过于复杂的配置文件以至于这个配置文件怎么写都需要人去学习,那就说明它的设计有问题(过度灵活)有些认同这句话。不过 web.config 的配置文件为了应付所有人写出的 ASP.Net 网站的,也就不可能简单了
Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。
在运行时对Web.config文件的修改不需要重启服务就可以生效(注:<processModel> 节例外)。当然Web.config文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。
别的不清楚,,等大牛来讲明白...
配置身份验证!
权限等等!
我了解的就这么多!
它真的很重要的!
论坛首页 新手指南 社区地图
专题回顾More社区焦点
如何制作统计图泛型类和动态加载树形 实现SQL中的触发器pictureBox图片事件 checkedListBox反选
系统级优化-为你省到底分享省钱的方法 经验总结—A Tip未来新技术发布会 AMT配置模式解析
令人喷饭的美国法律+笑话 实现一对话框里放对话框 我对进程与函数的理解bi里ssis数据抽取的问题 最快操作数据insert update delete 程序人生一年,迷茫中我的软件工程师老婆 去哪打工比较好 SQL语句时间比较实现字段筛选的存储过程 大学时女同学说过的雷人语录 vc窗口怎么分成8分屏及转换
RSS版主推荐-技术区
mdejtod[gyk120推荐] 如何通过进程获取文件真实路径!!!! [Windows]
real518[yinyuan1987推荐] struts+hibernate的问题 [Web]
MSTOP[顾湘云推荐] [原] 如何建立SQLSERVER的内存数据库. [疑难问题]
supergreenbean[Modest推荐] 系列专题:【附源码】Windows Shell接... [基础类]
<appSettings>
<add key="connStr1" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="/>
<add key="connStr2" value="App_Data\test.mdb"/>
</appSettings>
这个配置数据库连接串
使用示例:
public class DBConn
{
protected OleDbConnection _conn; public DBConn(System.Web.UI.Page page)
{
string path = page.Server.MapPath(ConfigurationSettings.AppSettings["connStr2"]);
string connectString = ConfigurationSettings.AppSettings["connStr1"];
connectString += path;
_conn = new OleDbConnection(connectString);
_conn.Open();
}
........ <system.web>
<compilation debug="true" />
这个配置网站为DEBUG模式 <authentication mode="Windows"/>
这个配置为WINDWOS认证模式。 <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
这个配置403,404出错时的传回页面配置网站邮件服务器:
<mailSettings>
<smtp from="[email protected]">
<network host="smpt.gmail.com" userName="" password=""/>
</smtp>
诸如此类。都是一些常量参数,因为多次用到这些参数,所以写在配置文件中用起来就方便多了。甚至某些临时数据也可以从程序中写入,让另一网页访问
http://www.cnblogs.com/sharpedge/archive/2005/12/01/288276.html
http://www.cnblogs.com/sharpedge/archive/2005/12/04/290537.html
http://xrinehart.cnblogs.com/archive/2005/12/03/289978.html