Web.Config

这篇文章是我抄的,因为我辞职了,我是在网吧帮大家找了一篇学习的文章,当然WEB.config的功能远远不只是这些.建议大家去买一本ASP.NET基础教程 C#案例版,里面有详细的介绍.同时,给大家推荐一个WEB.config的工具web.config editor 下载地址是:https://www.hunterstone.com/hsstore/ProductDetails.aspx?productID=101

我找到工作以后就会争取发挥自己最大的水平,把原创的文章给大家.实在对不起,我希望无论发生什么事情,大家都不要忘了学习,都不要忘了我们的目的!


你会经常碰到这种情况:几乎在网站的每个页面上,存储一些全局处理信息。理想的做法是将这些信息一次性的集中存储在资料档案库中,而不是在网站的每个页面上都重复这样的操作。比如说数据库连接串就是这样的信息,如果这些信息不是集中存储在特定区域中,而是在网站的每个需要连接数据库的页面上手工输入,可以设想:当数据库连接串改动时将会令人头痛,你必须遍历网站中所有连接数据库的页面去修改!
在传统的ASP中,这些全局处理信息一般存储在application对象中。(请记住:将打开的连接数据库对象,存储在application对象中绝对不是明智之举,但如只是将数据库连接串,存储在application对象中就是个很好的主意。)在ASP.NET中仍然有application对象的概念,其存取方式也类似传统的ASP。其同样能够在Web.config文件中设置application-wide资源。在这篇文章中,我们将实验怎样在Web.config文件中设置application-wide资源,和如何从一个ASP.NET网页读取这些设置信息。我们也将看看如何在web.config中自定义设置。
什么是Web.config
在传统的ASP中,网站所有的相关信息被存放在IIS的Metadata元数据中。它的不利之处在于远程网站开发人员无法方便的更改网站的配置信息。如果你们的网站主机托管给一家公司,你可能已经注意到这一点。举个例子,如果你添加一个自定义的404报错页,需要通过Internet服务管理器更改设置。所以你很可能要为此支付一定的费用给主机托管公司。(如想进一步了解如何在传统的ASP中,添加一个自定义的404报错页,请查阅:http://www.4guysfromrolla.com/webtech/061499-1.shtml 。)
在ASP.NET中,这些设置被迁移到网站根目录下的一个XML格式的文件中(Web.config)。通过Web.config,你可为网站定义诸如自定义的404报错页、(身份)验证和授权等设置;如果允许跟踪,还可为ASP.NET的网页设置编译选项。(如想进一步了解如何配置ASP.NET,请查阅:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaspnetconfiguration.asp 。)
在Web.config中定义Application-Wide的设置
如前所述,Web.config文件是一个XML格式的文件。在根层是 <configuration> 的标记。在这个标记内,你可以添加许多其他的标记,在你要定义的大部分的网站配置参数的地方,最常用,也是最有用的一个是 system.web 标记。另外,为定义 application-wide 的设置,你要使用 <appSettings> 标记。在这个标记中,你可用 <add ... /> 标记定义0到多个设置。例如:如果我们希望增加一个数据库连接串参数,我们可以用如下的 Web.config 文件:
<configuration>
<!-- application specific settings -->
<appSettings>
<add key="connString" value="connection string" />
</appSettings>
<system.web>
...
</system.web>
</configuration>
如上的代码添加了一个名为connString 的 application-wide 设置,由connection string提供数据连接串的值。现在,你可以在这个网站的大部分ASP.NET网页中,用下面的语句读取 connString 这个参数的值:
ConfigurationSettings.AppSettings("connString")
事实上,如果你按照《A Thorough Examination of the DataGrid(全面测试数据网格)》这篇文章的内容,测试了关于数据网格的一些例子,(如想进一步了解,请查阅:http://aspnet.4guysfromrolla.com/demos/dgExample1.aspx )你将发现他们总是利用这个技术连接数据库。具体程序语句如下:
Dim myConnection as New SqlConnection(ConfigurationSettings.AppSettings("connString"))
定义Application-Wide 类的设置
如果你正在创建一个大型ASP.NET应用,比较明智的决定是将大量的网站全局管理、调整属性定义为 application-wide 参数。到目前为止,你可以象刚才我们所作的那样使用 appSettings 标记。但如果你想卖出你的网络应用程序,或者使其被别人的网站所调用,在appSettings 标记中放置这样的一些参数,可能会导致一些问题。举个例子:设想你把一个你希望可配置的数据库连接串命名为 connString ,正如我们在前面所作的一样,于是你在 appSettings 标记中创建一个键(key)命名为 connString 。将要安装你的应用程序的人,正在试图使其整合到他原来的网站。它也许已经存在这样的配置,这就意味着他不得不修改这个设置和所有引用它的页面,使得这些命名不会与你设置中的命名冲突。
你当然不愿让你的最终用户陷入这种头痛的境地。为了避免这种混乱,你可以在Web.config 文件中,把你应用程序的设置“分组”为一个唯一的标记。也就是说你可以在Web.config 文件中创建一个名为 <MyAppSettings> 的标记,然后再象我们前面所述那样简单地添加application-wide 的设置。为了在 Web.config 中自定义一个标记,你必须先通过 <configuration> 标记,在Web.config 中明确的定义一个新的标记名称,例如:
<configuration>
<configSections>
<section name="MyAppSettings"
type="System.Configuration.NameValueFileSectionHandler,
System, Version=1.0.3300.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" />
</configSections>
...
</configuration>
注意:
在 <section ... /> 标记中的type属性值都必须写在同一行中,在这里我们换行是为了看起来更清晰。
这个 <section ... /> 标记指明我们将添加一个自定义的名为 MyAppSettings 的标记。从现在开始,为了添加application-wide 参数,我们能在Web.config 文件中添加一个 <MyAppSettings> 标记和 <add ... /> 标记,如下所示:
<configuration>
<configSections>
<section name="MyAppSettings"
type="System.Configuration.NameValueFileSectionHandler,
System, Version=1.0.3300.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" />
</configSections>
<MyAppSettings>
<add key="connString" value="connection string" />
</MyAppSettings>
...
</configuration>
最后,为了在ASP.NET 的网页中,读取这个自定义的值,我们用如下的语法:
ConfigurationSettings.GetConfig("MyAppSettings")("connString")
更一般的做法是:把 MyAppSettings 替换为你选择用来存放自定义设置标记的名称;同时把 connString 替换为在自定义设置标记中,你希望读取的参数名称。通过这种方法,当发售你的ASP.NET网页应用程序时,安装他的人就不必陷入一些命名冲突之中(当然,除非他们也已经创建了一个和你所命名的完全相同的自定义设置)。
原文地址:https://www.cnblogs.com/free/p/76018.html