web.config配置大全

作者:互联网   出处:控件中国网   2014-11-05 19:05:12   阅读:1

web.config配置大全

web.config配置详细说明
 
(一).Web.Config是以XML文件规范存储,配置文件分为以下格式

    1.配置节处理程序声明
    特点: 位于配置文件的顶部,包含在<configSections>标志中。

    2.特定应用程序配置
    特点: 位于<appSetting>中。 可以定义应用程序的全局常量设置等信息.

    3.配置节设置
    特点: 位于<system.Web>节中,控制Asp.net运行时的行为.

    4.配置节组
    特点: 用<sectionGroup>标记,可以自定义分组,可以放到<configSections>内部或其它<sectionGroup>标记的内部.

    (二).配置节的每一节
    1.<configuration>节
    根元素,其它节都是在它的内部.
   
     2.<appSetting>节
    此节用于定义应用程序设置项。对一些不确定设置,还可以让用户根据自己实际情况自己设置
    用法:
     I.
        <appSettings>
           <add key="Conntction" value="server=192.168.85.66;userid=sa;password=;database=Info;"/>
        <appSettings>
        定义了一个连接字符串常量,并且在实际应用时可以修改连接字符串,不用修改程式代码.
    II.
        <appSettings>
          <add key="ErrPage" value="Error.aspx"/>
        <appSettings>
        定义了一个错误重定向页面.

    3.<compilation>节
    格式:
        <compilation defaultLanguage="c#" debug="true" />
     I.
        default language: 定义后台代码语言,可以选择C#和VB.net两种语言.
     II.
        debug : 为true时,启动aspx调试; 为false不启动aspx调试,因而可以提高应用程序运行时的性能。 一般程序员在开发时设置为true,交给客户时设置为false.

    4.<customErrors>节
    格式:
        <customErrors mode="RemoteOnly" defaultRedirect="error.aspx"
            <error statusCode="440" redirect="err440page.aspx"/>
            <error statusCode="500" redirect="err500Page.aspx"/>
        />
    I.
        mode : 具有On,Off,RemoteOnly 3种状态。On表示始终显示自定义的信息; Off表示始终显示详细的asp.net错误信息; RemoteOnly表示只对不在本地Web服务器上运行的用户显示自定义信息.
    II.
        defaultRedirect: 用于出现错误时重定向的URL地址. 是可选的
    III.
        statusCode: 指明错误状态码,表明一种特定的出错状态.
    IV.
        redirect:错误重定向的URL.

    5.<globalization>节
    格式:
        <globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" />
    I.
        requestEncoding: 它用来检查每一个发来请求的编码.
    II.
        responseEncoding: 用于检查发回的响应内容编码.
    III.
        fileEncoding: 用于检查aspx,asax等文件解析的默认编码.

    6.<sessionState>节
    格式:
        <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" />
    I.
        mode: 分为off,Inproc,StateServer,SqlServer几种状态
    II.
        stateConnectionString :指定Asp.net应用程序存储远程会话状态的服务器名,默认为本机
    III.
        sqlConnectionString: 当用会话状态数据库时,在这里设置连接字符串
    IV.
        Cookieless: 设置为true时,表示不使用cookie会话状态来标识客户; 否则,相反.
    V.
        TimeOut: 用来定义会话状态存储的时间,超过期限,将自动终止会话.

    7.<authentication>节
    格式:
        <authentication mode="Forms">
          <forms name=".ASPXUSERDEMO" loginUrl="Login.aspx" protection="All" timeout="30"/>
          </authentication>
          <authorization>
          <deny users="?"/>
        </authorization>
    I.
        Windows: 使用IIS验证方式
    II.
        Forms: 使用基于窗体的验证方式
    III.
     Passport: 采用Passport cookie验证模式
    IV.
        None: 不采用任何验证方式

     里面内嵌Forms节点的属性涵义:
    I.
        Name: 指定完成身份验证的Http cookie的名称.
    II.
        LoginUrl: 如果未通过验证或超时后重定向的页面URL,一般为登录页面,让用户重新登录
    III.
        Protection: 指定 cookie数据的保护方式.

        可设置为: All None Encryption Validation四种保护方式
            a. All表示加密数据,并进行有效性验证两种方式
            b. None表示不保护Cookie.
            c. Encryption表示对Cookie内容进行加密
            d. validation表示对Cookie内容进行有效性验证
    IV.
        TimeOut: 指定Cookie的失效时间. 超时后要重新登录.

    从文件名就可以看出是做配置用的,比如配置自定义错误页面,debug,等等
    存放连接字符串是最基本的用法,
    高级一点可以配置httpmodule,httphandler...
    再高级一点可以写一个继承自IConfigurationSectionHandler,添加自定义的配置节...
    功能是很强大的
    ASP.NET提供了一个丰富而可行的配置系统,以帮助管理人员轻松快速的建立自己的WEB应用环境。    ASP.NET提供的是一个层次配置架构,可以帮助WEB应用、站点、机器分别配置自己的扩展配置数据。    ASP.NET的配置系统具有以下优点:
    ●ASP.NET允许配置内容可以和静态内容、动态页面和商业对象放置在同一应用的目录结构下。当管理人员需要安装新的ASP.NET应用时,只需要将应用目录拷贝到新的机器上即可。
    ●ASP.NET的配置内容以纯文本方式保存,可以以任意标准的文本编辑器、XML解析器和脚本语言解释、修改配置内容。
    ●ASP.NET 提供了扩展配置内容的架构,以支持第三方开发者配置自己的内容。
    ●ASP.NET配置文件的更修被系统自动监控,无须管理人员手工干预。


     4.2.2配置文件的规则
    ASP.NET的配置文件是基于XML格式的纯文本文件,存在于应用的各个目录下,统一命名为“config.web”。它决定了所在目录及其子目录的配置信息,并且子目录下的配置信息覆盖其父目录的配置。

    WINNT\Microsoft.NET\Framework\版本号\下的config.web为整个机器的根配置文件,它定义了整个环境下的缺省配置。

    缺省情况下,浏览器是不能够直接访问目录下的config.web文件。

    在运行状态下,ASP.NET会根据远程URL请求,把访问路径下的各个config.web配置文件叠加,产生一个唯一的配置集合。举例来说,一个对URL: http://localhost/webapp/owndir/test.aspx的访问,ASP.NET会根据以下顺序来决定最终的配置情况:
    1..\Microsoft.NET\Framework\v.1.00\config.web (缺省配置文件)
    2..\webapp\config.web (应用的配置)
    3..\webapp\owndir\config.web (自己的配置)


    4.2.3配置文件的语法规则

   (1)标识
    配置内容被置于config.web文件中的标记<configuration>和</configuration>之间。
    格式:
        <configuration>
            配置内容…
        </configuration>

    (2)配置段句柄说明
    ASP.NET的配置文件架构并未指定任何文件格式或者是支持的配置属性。相反的,它提出了“配置段句柄申明”的概念来支持任意的用户定义配置段。
    格式:
        <configsections>
          <add name=欲定义配置段名 type=处理的句柄函数 />
        </configsections>

    (3)配置段
    具体定义配置的内容,供应用使用。

    以下例子定义了一个“httpmodules”配置段,设置了系统http相关的处理模块
<configuration>
     <configsections>
       <add name="httpmodules" type="System.Web.Configuration.HttpModules ConfigurationHandler" />
     </configsections>

    <httpmodules>
       <add type="System.Web.SessionState.CookielessSessionModule" />
      <add type="System.Web.Caching.OutputCacheModule" />
      <add type="System.Web.SessionState.SessionStateModule" />
       <add type="System.Web.Security.WindowsAuthenticationModule" />
      <add type="System.Web.Security.CookieAuthenticationModule" />
      <add type="System.Web.Security.PassportAuthenticationModule" />
      <add type="System.Web.Security.CustomAuthenticationModule" />
      <add type="System.Web.Security.UrlAuthorizationModule" />
       <add type="System.Web.Security.FileAuthorizationModule" />
    </httpmodules>
</configuration>


    4.2. 4   ASP.NET定义的标准配置段

(1)httpmodule    段: 定义了应用的http请求的处理模块以及诸如安全、日志之类的应用方式
(2)httphandlers 段: 负责映射URLs到IhttpHandler类
(3)sessionstat    段: 负责配置http模块的会话状态
(4)globalization   段: 配置应用的公用设置
(5)compilation    段: 配置ASP.NET的编译环境
(6)trace      段: 配置ASP.NET的跟踪服务
(7)security         段: ASP.NET的安全配置
(8)iisprocessmodel 段: 在IIS上配置ASP.NET的处理模式
(9)browercaps   段: 配置浏览器的兼容部件


    4.2. 5    一个配置读出的例子

(1)config.web配置文件

    <!--config.web 请放入FormCfg.aspx所在目录-->
      <configuration>
          <!--申明一个test配置段-->
          <configsections>
              <add name="test" type="System.Web.Configuration.DictionarySectionHandler" />
          </configsections>

          <test>
              <!--配置一个键key,其内容为just a configure test-->
              <add key="key" value="just a configure test" />
          </test>
      </configuration>

(2)读出其内容

    <!--文件名:Application/FormCfg.aspx-->
    <html>
    <head>
    <script language="VB" runat=server>
        sub page_load(s as object ,e as eventargs)
        '取出test配置段的key键的值
        Dim CfgSection As Hashtable = Context.GetConfig("test")
         Dim Msg As String = CStr(CfgSection("key"))

        lblMsg.text=Msg
        end sub
    </script>
    <title>配置信息的读取</title>
    </head>
    <body>
        <center>
            config.web中"test"配置段中key的内容为: <asp:label id=lblmsg runat=server />
        </center>
     </body>
    </html>

(3)运行结果


    4.2. 6    Config.web配置实例
    <configuration>
        <!--定义用户应用的公用设置,如SQL的sql连接串等等-->
        <appsettings></appsettings>

        <!--设置浏览器的兼容性部件-->
        <browsercaps></browsercaps>

        <!--编译环境设置,非调试模式-->
        <compilation debugmode="false">

            <!--缺省编译语言为vb,以后可以不再在Page中定义脚本语言-->
            <compilers defaultlanguage="vb">

            <!--以MSVSA.dll编译.vb为后缀的VB文件-->
            <compiler language="VB" extension=".vb" type="MSVSA.dll#Microsoft.VB.Compiler"/></compilers>

            <assemblies>
                <!--加入对System.Data的引用-->
                <add assembly="System.Data" />

                <!--去掉对System.Data的引用-->
                <remove assembly="System.IO" />

                <!--去掉config.web中包含或继承来的引用-->
                <clear />
            </assemblies>
        </compilation>

        <!--设置应用全局环境-->
            <!--文件、请求、返回以gb2312编码,以保证浏览器正确显示中文-->
            <globalization fileencoding="gb2312" requestencoding="gb2312" responseencoding="gb2312"/>

            <!--定义用户出错的处理-->
            <!--出错缺省显示defaultredirect指定的页面,mode为on时,遵循customerrors配置段-->
            <!--mode为off时,忽略用户出错,mode为remoteonly时,本地才显示真正的出错原因-->
            <customerrors defaultredirect="AnErrorHasOccured.aspx?ErrNum=-1" mode="remote">

                <!--当出错码为500时,显示redirect指定的页面-->
                <error statuscode="500" redirect="AnErrorHasOccured.aspx?ErrNum=500"/>
            </customerrors>

            <!--指定目录webapp的访问权限-->
            <location path="webapp” >
                <!--非授权用户不能进入webapp目录-->
                <security>
                <authorization>
                <deny users="?" />
                </authorization>
                </security>
             </location>

            <!--定义安全属性-->
             <security>
                <authorization>

                <!--角色为Adminstrators和所有的用户访问其指定的资源-->
                <allow roles="Adminstrators"/>
                <allow users="*" />
                 </authorization>
             </security>
    </configuration>

 

<?xml version="1.0" standalone="yes"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<!--配置全局变量-->
<appSettings>
<add key="examstr" value="server=.;database=myweb_exam_db;uid=exam_login;pwd=xxd_examadmin"/>
</appSettings>
<!--配置全局变量-->
<!--网站系统配置-->
<system.web>
<!--上传文件时提示访问被拒绝,生成图片文件等失败文件夹没有改写权限-->
<identity impersonate="true"/>
<!--在客户端显示错误信息-->
<customErrors mode="Off" />
<!--允许匿名访问-->
<authorization>
<allow users="*" />
</authorization>
<!--启用跟踪页面-->
<trace enabled="true" requestLimit="1000" pageOutput="true" traceMode="SortByTime" localOnly="true" />
<!--防止网页乱码-->
<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312"/>
<!--有两个form时,用窗体提交时配置-->
<pages validateRequest="false" enableSessionState="true" enableViewState="true" enableEventValidation="false"/>
<!--设置上传文件大小-->
<httpRuntime executionTimeout="300" maxRequestLength="102400" useFullyQualifiedRedirectUrl="false"/>
</system.web>
<!--网站系统配置-->
</configuration>

 

 

VS2008、ASP.NET 3.5

一. 场景
    这里仅举一个简单应用的例子,我希望在web.config里面增加网站的基本信息,如:网站名称,网站版本号,是否将网站暂时关闭等。
二. 基本实现方法
1. 定义配置节点对应的类:SiteSetting
    代码片段:
   

namespace Tristan.SeeCustomConfig {
    public class SiteSetting {
        public string SiteName { get; set; }
        public string SiteVersion { get; set; }
        public bool Closed { get; set; }
    }
}

2. 实现IConfigurationSectionHandler接口:SiteSettingHandler
   

Code
namespace Tristan.SeeCustomConfig {
    public class SiteSettingHandler : IConfigurationSectionHandler {
        IConfigurationSectionHandler Members#region IConfigurationSectionHandler Members

        public object Create(object parent, object configContext, System.Xml.XmlNode section) {
            string siteName = section.SelectSingleNode("siteName").InnerText;
            string siteVersiton = section.SelectSingleNode("siteVersion").InnerText;
            bool closed = Convert.ToBoolean(section.SelectSingleNode("closed").InnerText);
            return new SiteSetting() { SiteName = siteName, SiteVersion = siteVersiton };
        }

        #endregion
    }
}

3. 在web.config中进行配置
    在<configSections></configSections>里面增加一个节点:

<section name="siteSetting" type="Tristan.SeeCustomConfig.SiteSettingHandler"/>
    name:指定我们将要增加的节点名为"siteSetting",接下来会使用它来编写配置节点
    type:指定处理这个配置节点的handler,这个类,我们在前面已经把代码实现了
    然后在<configuration><configuration>里面增加一段xml:

<siteSetting>
        <siteName>遇见未来</siteName>
        <siteVersion>1.0</siteVersion>
    <closed>false</closed>
    </siteSetting>

4. 看看效果吧
    随便建一个页面在后台代码里写几行代码做个测试:
   

namespace Tristan.SeeCustomConfig {
    public partial class _Default : System.Web.UI.Page {
        protected void Page_Load(object sender, EventArgs e) {
            SiteSetting site = ConfigurationManager.GetSection("siteSetting") as SiteSetting;
            Response.Write(site.SiteName + "," + site.SiteVersion + "," + site.Closed.ToString());
        }
    }
}
    运行,可以看到,我们在web.config中的信息被write出来了。 :)

三. 使用XML反序列化
1. 修改SiteSetting
   

namespace Tristan.SeeCustomConfig {

    [Serializable]
    [XmlRoot("siteSetting")]
    public class SiteSetting {
        [XmlElement("siteName",typeof(string))]
        public string SiteName { get; set; }

        [XmlElement("siteVersion",typeof(string))]
        public string SiteVersion { get; set; }

        [XmlElement("closed",typeof(Boolean))]
        public bool Closed { get; set; }
    }
}

2. 修改SiteSettingHandler
   

Code
namespace Tristan.SeeCustomConfig {
    public class SiteSettingHandler : IConfigurationSectionHandler {
        IConfigurationSectionHandler Members#region IConfigurationSectionHandler Members

        public object Create(object parent, object configContext, System.Xml.XmlNode section) {
            //string siteName = section.SelectSingleNode("siteName").InnerText;
            //string siteVersiton = section.SelectSingleNode("siteVersion").InnerText;
            //bool closed = Convert.ToBoolean(section.SelectSingleNode("closed").InnerText);
            //return new SiteSetting() { SiteName = siteName, SiteVersion = siteVersiton };

            string typeName = ((XmlElement)section).GetAttribute("type");
            XmlSerializer xz = new XmlSerializer(Type.GetType(typeName));
            using (StringReader sr = new StringReader(section.OuterXml)) {
                return xz.Deserialize(sr);
            }
        }

        #endregion
    }
}

3. 修改web.config中的配置
   

<siteSetting type="Tristan.SeeCustomConfig.SiteSetting">
        <siteName>遇见未来</siteName>
        <siteVersion>1.0</siteVersion>
    <closed>false</closed>
    </siteSetting>

4. 再来看看
    不修改测试代码,得到了一样的效果 :)
 
 

Copyright© 2006-2015 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 渝ICP备12000264号 法律顾问:元炳律师事务所
客服软件
live chat