为了⽅便配置fig⽂件,我写了⼀个常⽤的fig⽂件的⽰例,可以以此为模版根据需要修改。
创建fig⽂件的三种快捷⽅法:
1、⽤VS2005中的asp⽹站配置⼯具配置
2、参考C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727( framework版本)\CONFIG\⽬录下的fig ⽂件进⾏编写
3、以下边这个⽂件作模版修改
〈membership>
〈providers>
〈remove name="NetSqlMembershipProvider" />
〈add name="NetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="strConnUserDB"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="7"
minRequiredNonalphanumericCharacters="1"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
description="存储membership数据"
/>
〈/providers>
〈/membership>
〈profile enabled="true" defaultProvider="NetSqlProfileProvider" inherits="">
〈providers>
〈remove name="NetSqlProfileProvider" />
〈add name="NetSqlProfileProvider"
connectionStringName="strConnUserDB"
applicationName="/"
type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
description="存储Profile数据"
/>
〈/providers>
〈properties>
〈add name="Name"/>
〈add name="BackColor" type="System.Drawing.Color" allowAnonymous="true" serializeAs="Binary"/>
〈/properties>
〈/profile>
〈roleManager enabled="true" cacheRolesInCookie="true">
〈providers>
〈remove name="NetSqlRoleProvider" />
〈add name="NetSqlRoleProvider"
connectionStringName="strConnUserDB"
applicationName="/"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
description="存储Role数据"
/>
〈/providers>
〈/roleManager>
〈!-- Other roleManager attributes (and their defaults) include:
cookieName=".ASPXROLES"
cookieTimeout="30"
cookiePath="/"
cookieRequireSSL="false"
cookieSlidingExpiration="true" // Renew expiring cookies?
createPersistentCookie="false" // Issue persistent cookie?
cookieProtection="All" /> // Cookie protection level
-->
〈compilation debug="false" />
〈authentication mode="Forms" />
〈!--
〈anonymousIdentification
enabled="true"
cookieName=".ASPXANONYMOUS"
cookieTimeout="43200"
cookiePath="/"
cookieRequireSSL="false"
cookieSlidingExpiration="true"
cookieProtection="All"
cookieless="UseCookies"
/>
-->
〈!--
〈customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
〈error statusCode="403" redirect="NoAccess.htm" />
〈error statusCode="404" redirect="FileNotFound.htm" />
〈/customErrors>
-->
〈/system.web>
〈location path="user">
〈system.web>
〈authorization>
〈allow roles="?" />
〈deny users="*"/>
〈/authorization>
asp查看源码配置ui〈/system.web>
〈/location>
〈/configuration>
在部署程序时为了保密起见并不将源代码随项⽬⼀同发布,⽽我们开发时的环境与部署环境可能不⼀致(⽐如数据库不⼀样),如果在代码中保存这些配置这些信息部署时需要到⽤户那⾥更改代码再重新编译,这种部署⽅式⾮常⿇烦。在中提供了⼀种便捷的保存项⽬配置信息的办法,那就是利⽤配置⽂件,配置⽂件的⽂件后缀⼀般
是.config,在asp中配置⽂件名⼀般默认是fig。
在asp中配置⽂件名⼀般默认是fig。每个fig⽂件都是基于XML的⽂本⽂件,并且可以保存到Web应⽤程序中的任何⽬录中。在发布Web应⽤程序
时fig⽂件并不编译进dll⽂件中。如果将来客户端发⽣了变化,仅仅需要⽤记事本打开fig⽂件编辑相关设置就可以重新正常使⽤,⾮常⽅便。
本篇要讲述的知识如下:
1.配置⽂件的查优先
2.配置⽂件节点
3.配置⽂件的操作
4.配置⽂件的查优先级
在提供了⼀个针对当前机器的配置⽂件,这个⽂件是fig,它位于%windir%Microsoft.NETFrameworkv2.0.50727CONFIG⽂件下(%windir%是系统分区下的系统⽬录,在命令⾏模式下输⼊%windir%然后回车就能查看当前机器的系统⽬录,在Windows2003及WindowsXP中%windir%是系统分区下的windows⽬录,
在Windows2000中%windir%是系统分区下的WinNT⽬录,在笔者机器上这个系统⽬录是C:WINDOWS)。这个⽂件⾥⾯定义了针对当前机器的WinForm程序和asp应⽤程序的配置。下⾯是fig⽂件的内容:
在这个⽂件夹下还有⼀个fig⽂件,这个⽂件包含了asp⽹站的常⽤配置。下⾯是这个fig⽂件的内容:
asp⽹站IIS启动的时候会加载配置⽂件中的配置信息,然后缓存这些信息,这样就不必每次去读取配置信息。在运⾏过程中asp应⽤程序会监视配置⽂件的变化情况,⼀旦编辑了这些配置信息,就会重新读取这些配置信息并缓存。
当我们要读取某个节点或者节点组信息时,是按照如下⽅式搜索的:
(1)如果在当前页⾯所在⽬录下存在fig⽂件,查看是否存在所要查的结点名称,如果存在返回结果并停⽌查。
(2)如果当前页⾯所在⽬录下不存在fig⽂件或者fig⽂件中不存在该结点名,则查它的上级⽬录,直到⽹站的根⽬录。
(3)如果⽹站根⽬录下不存在fig⽂件或者fig⽂件中不存在该节点名则在%windir%Microsoft.NETFrameworkv2.fig⽂件中查。
(4)如果在%windir%Microsoft.NETFrameworkv2.fig⽂件中不存在相应结点,则
在%windir%Microsoft.NETFrameworkv2.fig⽂件中查。
(5)如果仍然没有到则返回null。
所以如果我们对某个⽹站或者某个⽂件夹有特定要求的配置,可以在相应的⽂件夹下创建⼀个fig⽂件,覆盖掉上级⽂件夹中的fig⽂件中的同名配置即可。这些配置信息的寻只查⼀次,以后便被缓存起来供后来的调⽤。在asp应⽤程序运⾏过程中,如果fig⽂件发⽣更改就会导致相应的应⽤程序重新启动,这时存储在服务器内存中的⽤户会话信息就会丢失(如存储在内存中的Session)。⼀些软件(如杀毒软件)每次完成对fig的访问时就会修改fig的访问时间属性,也会导致asp应⽤程序的重启。
fig⽂件是⼀个XML⽂件,它的根结点是<configuration>,在<configuration>节点下的常见⼦节点有:<configSections>、<appSettings>、<connectionStrings>和
<system.web>。其中<appSettings>节点主要⽤于配置⼀些⽹站的应⽤配置信息,⽽<connectionStrings>节点主要⽤于配置⽹站的数据库连接字符串信息。
<system.web>节点主要是⽹站运⾏时的⼀些配置,它的常见节点有如下:
<appSettings>节点
<appSettings>节点主要⽤来存储asp应⽤程序的⼀些配置信息,⽐如上传⽂件的保存路径等,以下是⼀个例⼦:
1. <appSettings>
2. <!--允许上传的图⽚格式类型-->
3. <add key="ImageType" value=".jpg;.bmp;.gif;.png;.jpeg"/>
4. <!--允许上传的⽂件类型-->
5. <add key="FileType" value=".jpg;.bmp;.gif;.png;.jpeg;.pdf;.zip;.rar;.xls;.doc"/>
6. </appSettings>
对于<appSettings>节点中的值可以按照key来进⾏访问,以下就是⼀个读取key值为“FileType”节点值的例⼦:
1. string fileType=ConfigurationManager.AppSettings["FileType "];
<connectionStrings>节点
<connectionStrings>节点主要⽤于配置数据库连接的,我们可以<connectionStrings>节点中增加任意个节点来保存数据库连接字符串,将来在代码中通过代码的⽅式动态获取节点的值来实例化数据库连接对象,这样⼀旦部署的时候数据库连接信息发⽣变化我们仅需要更改此处的配置即可,⽽不必因为数据库连接信息的变化⽽需要改动程序代码和重新部署。
以下就是⼀个<connectionStrings>节点配置的例⼦:
1. <connectionStrings>
2. <!--SQL Server数据库配置-->
3. <add name="AspNetStudyConnectionString1" connectionString="Data Source=(local);Initial Catalog=AspNetStudy;User ID=sa;Password=sa"/>
4. </connectionStrings>
在代码中我们可以这么实例化数据库连接对象:
1. //读取fig节点配置
2. string connectionString = ConfigurationManager.ConnectionStrings["AspNetStudyConnectionString1"].ConnectionString;
3. //实例化SqlConnection对象
4. SqlConnection connection = new SqlConnection(connectionString);
这样做的好处是⼀旦开发时所⽤的数据库和部署时的数据库不⼀致,仅仅需要⽤记事本之类的⽂本编辑⼯具编辑connectionString属性的值就⾏了。
<compilation>节点
<compilation>节点配置 ASP.NET 使⽤的所有编译设置。默认的debug属性为“true”,即允许调试,在这种情况下会影响⽹站的性能,所以在程序编译完成交付使⽤之后应将其设为“false”。
<authentication>节点
设置asp⾝份验证模式,有四种⾝份验证模式,它们的值分别如下:
Mode 说明
Windows 使⽤Windows⾝份验证,适⽤于域⽤户或者局域⽹⽤户。
Forms 使⽤表单验证,依靠⽹站开发⼈员进⾏⾝份验证。
Passport 使⽤微软提供的⾝份验证服务进⾏⾝份验证。
None 不进⾏任何⾝份验证。
<authentication>节点
<authentication>节点控制⽤户对⽹站、⽬录或者单独页的访问,必须配合<authentication>节点⼀起使⽤。
<customErrors>节点
<customErrors>节点⽤于定义⼀些⾃定义错误信息的信息。此节点有Mode和defaultRedirect两个属性,其中defaultRedirect属性是⼀个可选属性,表⽰应⽤程序发⽣错误时重定
向到的默认URL,如果没有指定该属性则显⽰⼀般性错误。Mode属性是⼀个必选属性,它有三个可能值,它们所代表的意义分别如下:
Mode 说明
On 表⽰在本地和远程⽤户都会看到⾃定义错误信息。
Off 禁⽤⾃定义错误信息,本地和远程⽤户都会看到详细的错误信息。
RemoteOnly 表⽰本地⽤户将看到详细错误信息,⽽远程⽤户将会看到⾃定义错误信息。
这⾥有必要说明⼀下本地⽤户和远程⽤户的概念。当我们访问asp应⽤程时所使⽤的机器和发布asp应⽤程序所使⽤的机器为同⼀台机器时成为本地⽤户,反之则称之为远
程⽤户。在开发调试阶段为了便于查错误Mode属性建议设置为Off,⽽在部署阶段应将Mode属性设置为On或者RemoteOnly,以避免这些详细的错误信息暴露了程序代码细节
从⽽引来⿊客的⼊侵。
下⾯我们添加⼀个页⾯CustomErrorsDemo.aspx,在它的Page_Load事件⾥抛出⼀个异常,代码如下:
1. using System;
2. using System.Data;
3. using System.Configuration;
4. using System.Collections;
5. using System.Web;
6. using System.Web.Security;
7. using System.Web.UI;
8. using System.Web.UI.WebControls;
9. using System.Web.UI.WebControls.WebParts;
10. using System.Web.UI.HtmlControls;
11.
12. public partial class CustomErrorsDemo : System.Web.UI.Page
13. {
14. protected void Page_Load(object sender, EventArgs e)
15. {
16. throw new Exception("故意抛出的异常。");
17. }
18. }
我们先配置<customErrors>如下:
1. <customErrors mode="RemoteOnly">
2. <error statusCode="403" redirect="NoAccess.htm" />
3. <error statusCode="404" redirect="FileNotFound.htm" />
4. </customErrors>
这时本地运⾏CustomErrorsDemo.aspx的效果如下:
远程访问时看到的效果:
如果我们将customErrors的Mode属性设置为“On”本地运⾏和远程访问都会看到如下效果:
如果将customErrors的Mode属性设置为“Off”本地运⾏和远程访问都会看到如下效果:
<error>⼦节点
在<customErrors>节点下还包含有<error>⼦节点,这个节点主要是根据服务器的HTTP错误状态代码⽽重定向到我们⾃定义的错误页⾯,注意要使<error>⼦节点下的配置⽣
效,必须将<customErrors>节点节点的Mode属性设置为“On”。下⾯是⼀个例⼦:
<customErrorsmode="On"defaultRedirect="GenericErrorPage.htm">
<errorstatusCode="403"redirect="403.htm"/>
<errorstatusCode="404"redirect="404.htm"/>
</customErrors>
在上⾯的配置中如果⽤户访问的页⾯不存在就会跳转到404.htm页⾯,如果⽤户没有权限访问请求的页⾯则会跳转到403.htm页⾯,403.htm和404.htm页⾯都是我们⾃⼰添加
的页⾯,我们可以在页⾯中给出友好的错误提⽰。
<httpHandlers>节点
<httpHandlers>节点⽤于根据⽤户请求的URL和HTTP谓词将⽤户的请求交给相应的处理程序。可以在配置级别的任何层次配置此节点,也就是说可以针对某个特定⽬录下
指定的特殊⽂件进⾏特殊处理。
下⾯是与fig⽂件同⼀⽬录下的fig⽂件中的<httpHandlers>节点配置:
<httpHandlers>
<addpath="*.rules"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.xoml"verb="*"type="System.ServiceModel.Activation.HttpHandler,System.ServiceMo
del,Version=3.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"validate="false"/>
<addpath="trace.axd"verb="*"type="System.Web.Handlers.TraceHandler"validate="true"/>
<addpath="WebResource.axd"verb="GET"type="System.Web.Handlers.AssemblyResourceLoader"validate="true"/>
<addpath="*.axd"verb="*"type="System.Web.HttpNotFoundHandler"validate="true"/>
<addpath="*.aspx"verb="*"type="System.Web.UI.PageHandlerFactory"validate="true"/>
<addpath="*.ashx"verb="*"type="System.Web.UI.SimpleHandlerFactory"validate="true"/>
<addpath="*.asmx"verb="*"type="System.Web.Services.Protocols.WebServiceHandlerFactory,System.Web.Services,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"validate="f
<addpath="*.rem"verb="*"type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934
<addpath="*.soap"verb="*"type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934 <addpath="*.asax"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.ascx"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.master"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.skin"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.browser"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.sitemap"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.fig"verb="GET,HEAD"type="System.Web.StaticFileHandler"validate="true"/>
<addpath="*.fig"verb="GET,HEAD"type="System.Web.StaticFileHandler"validate="true"/>
<addpath="*.config"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.cs"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.csproj"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.vb"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.vbproj"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.webinfo"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.licx"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.resx"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.resources"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.mdb"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.vjsproj"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.java"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.jsl"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.ldb"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.ad"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.dd"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.ldd"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.sd"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.cd"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.adprototype"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.lddprototype"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.sdm"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.sdmDocument"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.mdf"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.ldf"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.exclude"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.refresh"verb="*"type="System.Web.HttpForbiddenHandler"validate="true"/>
<addpath="*.svc"verb="*"type="System.ServiceModel.Activation.HttpHandler,System.ServiceModel,Version=3.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"validate="false"/> <addpath="*"verb="GET,HEAD,POST"type="System.Web.DefaultHttpHandler"validate="true"/>
<addpath="*"verb="*"type="System.Web.HttpMethodNotAllowedHandler"validate="true"/>
</httpHandlers>
从上⾯的配置中可以看出,针对*.mdf、*.ldf⽂件的Get或者Post请求都会交给System.Web.HttpForbiddenHandler来处理,处理的结果就是⽤户不能查看或者下载相关的⽂件。如
果我们某个⽂件夹下的⽂件或者某个类型的⽂件不允许⽤户下载,可以在</httpHandlers>节点中增加相应的⼦节点。
下⾯我们以⼀个例⼦来说明
<httpRuntime>节点⽤于对 ASP.NET HTTP 运⾏库设置。该节可以在计算机、站点、应⽤程序和⼦⽬录级别声明。
例如下⾯的配置控制⽤户最⼤能上传的⽂件为40M(40*1024K),最⼤超时时间为60秒,最⼤并发请求为100个。
<httpRuntimemaxRequestLength="40960"executionTimeout="60"appRequestQueueLimit="100"/>
<pages>节点
<pages>节点⽤于表⽰对特定页设置,主要有三个属性,分别如下:
属性名说明
buffer是否启⽤了 HTTP 响应缓冲。
enableViewStateMac是否应该对页的视图状态运⾏计算机⾝份验证检查 (MAC),以放置⽤户篡改,
默认为false,如果设置为true将会引起性能的降低。
validateRequest是否验证⽤户输⼊中有跨站点脚本攻击和SQL注⼊式漏洞攻击,默认为true,如果出现匹配情况就会发 HttpRequestValidationException 异常。对于包含有
在线⽂本编辑器页⾯⼀般⾃⾏验证⽤户输⼊⽽将此属性设为false。
下⾯就是⼀个配置节点的例⼦:
<pagesbuffer="true"enableViewStateMac="true"validateRequest="false"/>
<sessionState>节点
<sessionState>节点⽤于配置当前asp应⽤程序的会话状态配置。以下就是⼀个常见配置:
<sessionStatecookieless="false"mode="InProc"timeout="30"/>
上⾯的节点配置是设置在asp应⽤程序中启⽤Cookie,并且指定会话状态模式为在进程中保存会话状态,同时还指定了会话超时为30分钟。
<sessionState>节点的Mode属性可以是以下⼏种值之⼀:
属性值说明
Custom使⽤⾃定义数据来存储会话状态数据。
InProc默认值。由asp辅助进程来存储会话状态数据。
Off禁⽤会话状态。
SQLServer使⽤进程外SQL Server数据库保存会话状态数据。
StateServer使⽤进程外 ASP.NET 状态服务存储状态信息。
⼀般默认情况下使⽤InProc模式来存储会话状态数据,这种模式的好处是存取速度快,缺点是⽐较占⽤内存,所以不宜在这种模式下存储⼤型的⽤户会话数据。
<globalization>节点:
⽤于配置应⽤程序的全球化设置。此节点有⼏个⽐较重要的属性,分别如下:
属性名说明
fileEncoding可选属性。设置.aspx、.asmx 和 .asax ⽂件的存储编码。
requestEncoding可选属性。设置客户端请求的编码,默认为UTF-8.
responseEncoding可选属性。设置服务器端响应的编码,默认为UTF-8.
以下就是asp应⽤程序中的默认配置:
<globalizationfileEncoding="utf-8"requestEncoding="utf-8"responseEncoding="utf-8"/>
配置⽂件的读写操作
虽然fig⽂件是⼀个XML⽂件,但是由于权限的原因它在部署中不能像操作普通XML⽂件那样进⾏修改,在中提供了⼀个类⽤于对fig进⾏修改。 下⾯是针对fig修改通⽤类的代码:
usingSystem;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Configuration;
///<summary>
///ConfigurationOperator的摘要说明
///</summary>
publicclassConfigurationOperator:IDisposable
{
privateConfigurationconfig;
publicConfigurationOperator():this(HttpContext.Current.Request.ApplicationPath)
{
}
publicConfigurationOperator(stringpath)
{
config=WebConfigurationManager.OpenWebConfiguration(path);
}
///<summary>
///设置应⽤程序配置节点,如果已经存在此节点,则会修改该节点的值,否则添加此节点
///</summary>
///<paramname="key">节点名称</param>
///<paramname="value">节点值</param>
publicvoidSetAppSetting(stringkey,stringvalue)
{
AppSettingsSectionappSetting=(AppSettingsSection)config.GetSection("appSettings");
if(appSetting.Settings[key]==null)//如果不存在此节点,则添加
{
appSetting.Settings.Add(key,value);
}
else//如果存在此节点,则修改
{
appSetting.Settings[key].Value=value;
}
}
///<summary>
///设置数据库连接字符串节点,如果不存在此节点,则会添加此节点及对应的值,存在则修改
///</summary>
///<paramname="key">节点名称</param>
///<paramname="value">节点值</param>
publicvoidSetConnectionString(stringkey,stringconnectionString)
{
ConnectionStringsSectionconnectionSetting=(ConnectionStringsSection)config.GetSection("connectionStrings");
if(connectionSetting.ConnectionStrings[key]==null)//如果不存在此节点,则添加
{
ConnectionStringSettingsconnectionStringSettings=newConnectionStringSettings(key,connectionString);
connectionSetting.ConnectionStrings.Add(connectionStringSettings);
}
else//如果存在此节点,则修改
{
connectionSetting.ConnectionStrings[key].ConnectionString=connectionString;
}
}
///<summary>
///保存所作的修改
///</summary>
publicvoidSave()
{
config.Save();
config=null;
}
publicvoidDispose()
{
if(config!=null)
{
config.Save();
}
}
}
把上⾯的代码存放到App_Code⽂件夹下,我们在项⽬中就可以直接使⽤了。
我们通过⼀个例⼦演⽰如果使⽤这个通⽤类类对fig进⾏设置。新建⼀个aspx页⾯,下⾯是前台代码:
1. <@ Page Language="C#" AutoEventWireup="true" CodeFile="ConfigModifyDemo.aspx.cs" Inherits="ConfigModifyDemo" >
2.
3. <DOCTYPE html PUBLIC "//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4.
5. <html xmlns="/1999/xhtml" >
6. <head runat="server">
7. <title>在部署后修改fig的例⼦</title>
8. </head>
9. <body>
10. <form id="form1" runat="server">
11. <div>
12. <table border="0" cellpadding="0" cellspacing="0">
13. <tr><td>类型</td><td>名称</td><td>值</td></tr>
14. <tr><td>
15. 程序配置</td><td>
16. <asp:TextBox ID="txtKey" runat="server"></asp:TextBox>
17. <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtKey"
18. ErrorMessage="*" Display="Dynamic"></asp:RequiredFieldValidator></td><td>
19. <asp:TextBox ID="txtAppSetting" runat="server"></asp:TextBox></td></tr>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论