【原创】ASP.NET Forum 学习笔记系列--Web.config

ASP.NET Forum 学习笔记系列-Web.config

 

 

2005119号开始,正式开始研究ASP.NET Forum,希望通过本次的研究能够学习到DotNET的精髓。

 

今天从Web.config配置文件开始学习。爱出系列的我,也开始出所谓“ASP.NET Forum 学习笔记系列(×)”

 

那个“ASP.NET开发 笔试题目详解系列(×)”已经写到了第六贴了,估计再写两贴也就该结帖了。预计下两张要写“ADO.NET系列”和“T-SQL系列”。

 

只想把自己写的东西记录自己学习DotNET的的成长过程,不想要太多人的掌声与鲜花… …

 

好了,不多说了,言归正传。

 

 

预备知识:

 

 

所有配置信息都驻留在 <configuration> </configuration> XML 标记之间。标记间的配置信息分为两个主区域:配置节处理程序声明区域和配置节设置区域。

 

配置节处理程序声明出现在配置文件顶部 <configSections> </configSections> 标记之间。

 

 

<location> 元素

 

指定应用配置设置的资源。

 

 

原型:

 

<location path="path"  allowOverride="true|false"/>

 

 

可选属性

 

path  应用指定配置设置的资源。使用缺少路径属性的 <location> 将配置设置应用于当前目录及其所有子目录。

 

allowOverride 指定配置设置是否可以被子目录中的web.config 文件的配置设置重写。

 

 

<system.web>元素

 

ASP.NET 配置节指定根元素。包含各种配置元素,这些配置元素配置 ASP.NET Web 应用程序并控制这些应用程序的行为方式。

 

 

<system.web>

 

   <authentication>

 

   <authorization> 

 

   <browserCaps>  

 

   <clientTarget>

 

   <compilation>

 

   <customErrors>

 

   <globalization>

 

   <httpHandlers>

 

   <httpModules>

 

   <httpRuntime>

 

   <identity>

 

   <machineKey>

 

   <pages>

 

   <processModel>

 

   <securityPolicy>

 

   <serviceDescriptionFormatExtensionTypes>

 

   <sessionState>

 

   <trace>

 

   <trust>

 

   <webServices>

 

</system.web>

 

 

把几个常用的以及今天要用到的元素描述一下:

 

 

<authentication> 元素

 

 

配置 ASP.NET 身份验证支持。

 

 

<authentication mode="Windows|Forms|Passport|None">

 

   <forms name="name"  //指定要用于身份验证的 HTTP Cookie

 

          loginUrl="url"      //如果没找到任何有效的身份验证 Cookie,将请求重定向到的 URL

 

          protection="All|None|Encryption|Validation"    //指定 Cookie 使用的加密类型。

 

          timeout="30" path="/"     //Cookie 过期时间

 

          requireSSL="true|false"     //指定是否需要安全连接来转换身份验证 Cookie

 

          slidingExpiration="true|false">  //指定是否启用弹性过期时间

 

   </forms>

 

   <passport redirectUrl="internal" />  //指定要重定向到的页(如没有登录,则转到注册页. :login.asp)

 

</authentication>

 

 

<authorization> 元素

 

配置 ASP.NET 授权支持。

 

 

<authorization>

 

   <allow users="×,×,×"   //逗号分隔的具有访问权限的用户名列表。问号 (?) 允许匿名用户;星号 (*) 允许所有用户

 

          roles="comma-separated list of roles"

 

          verbs="×,×,×"/> //逗号分隔的 HTTP 传输方法列表,这些 HTTP 传输方法被允许对资源的访问。注册到 ASP.NET 的谓词为 GETHEADPOST DEBUG

 

 

   <deny users="×,×,×"  //逗号分隔的拒绝访问的用户名列表。问号 (?) 拒绝匿名用户;星号 (*) 拒绝所有用户

 

         roles="comma-separated list of roles"

 

         verbs="comma-separated list of verbs"/>

 

</authorization>

 

 

<customErrors defaultRedirect="url" 

 

                    mode="On|Off|RemoteOnly"> //根据mode的配置可以决定是否显示自定义错误信息

 

   <error statusCode="statuscode"  //指定将导致重定向到错误页的 HTTP 状态代码。

 

   redirect="url"/>  //将向客户端展示有关该错误的信息的错误页。

 

</customErrors>

 

 

<httpHandlers> 元素

 

 

<httpHandlers>

 

   <add verb="verb list"  //谓词列表可以是逗号分隔的 HTTP 谓词列表(例如“GET, PUT, POST”),也可以是开始脚本映射(例如通配符 * [星号])。

 

        path="path/wildcard"  //路径属性可以包含单个 URL 路径或简单的通配符字符串(例如 *.aspx)。

 

        type="type,assemblyname"  //逗号分隔的类/程序集组合。ASP.NET 首先在应用程序的专用 /bin 目录中搜索程序集 DLL,然后在系统程序集缓存中搜索程序集 DLL

 

        validate="true|false"/>

 

   <remove verb="verb list"  //与要移除的处理程序的谓词列表相匹配的谓词列表。

 

           path="path/wildcard" /> //与要移除的处理程序的路径相匹配的路径。

 

   <clear/>

 

</httpHandlers>

 

 

 

 

以下示例将对文件扩展名为 .New 的文件的所有 HTTP 请求映射到类 MyHandler.New,将对文件扩展名为 .MyNewFileExtension 的文件的 HTTP GET HTTP HEAD 请求映射到类 MyHandler.MNFEHandler。这两个类都在文件 MyHandler.dll 中的程序集 MyHandler 中。

 

 

<httpHandlers>

 

<configuration>

 

   <system.web>

 

      <httpHandlers>

 

         <add verb="*"

 

              path="*.New"

 

              type="MyHandler.New,MyHandler"/>

 

         <add verb="GET,HEAD"

 

              path="*.MyNewFileExtension"

 

              type="MyHandler.MNFEHandler,MyHandler.dll"/>

 

     </httpHandlers>

 

   <system.web>

 

</configuration>

 

 

 

<httpModules> 元素

 

在一个应用程序内配置 HTTP 模块。

 

 

<httpModules>

 

   <add type="classname,assemblyname"  //指定由版本、程序集和公钥标记组成的逗号分隔的类/程序集组合。ASP.NET 首先在应用程序的专用 /bin 目录中搜索程序集 DLL,然后在系统程序集缓存中搜索程序集 DLL

 

           name="modulename"/>             //模块名

 

   <remove name="modulename"/>

 

   <clear/>

 

</httpModules>

 

 

<pages> 元素

 

标识特定于页的配置设置。<pages> 节可以在计算机、站点、应用程序和子目录级别声明。

 

 

<pages buffer="true|false"                              //是否启用缓冲

 

       enableSessionState="true|false|ReadOnly"  //是否启用会话状态

 

       enableViewState="true|false"                          //是否启用视图状态

 

       enableViewStateMac="true|false"                  //指定在从客户端回发页时,ASP.NET 是否应该对页的视图状态运行消息身份验证代码 (MAC)

 

        smartNavigation="true|false"                         //是否启用智能导航

 

       pageBaseType="typename, assembly"       //指定默认情况下 .aspx 页继承的代码隐藏类。

 

       userControlBaseType="typename"               //指定默认情况下用户控件继承的代码隐藏类。

 

       autoEventWireup="true/false"                          //是否自动启用页事件

 

       validateRequest="true|False"/>                   //指示 ASP.NET 在从浏览器输入的所有内容中检查是否存在潜在的危险数据

 

 

 

===========================================================

 

 

<configuration>

 

     <configSections>

 

 

         <!-- 初始化Asp.Net Forums Handler  -->

 

         <sectionGroup name="forums">

 

              <section name="forums" type="AspNetForums.Configuration.ForumsConfigurationHandler, AspNetForums.Components" />

 

         </sectionGroup>

 

 

     </configSections>

 

     <system.web>

 

 

         <!-- 标准应用程序设置 -->

 

         <compilation defaultLanguage="c#" debug="true" />

 

         <pages validateRequest="false" autoEventWireup="true" pageBaseType="AspNetForums.Components.ForumPage, AspNetForums.Components" />

 

 

         <!-- 远程客户端是否显示详细错误信息 -->

 

         <customErrors mode="Off" />

 

 

 

         <!-- 指定应用程序HttpModule -->

 

         <httpModules>

 

              <add name="AspNetForums" type="AspNetForums.ForumsHttpModule, AspNetForums.Components" />

 

         </httpModules>

 

         <!-- 指定应用程序HttpHandlers -->

 

         <httpHandlers>

 

              <add verb="GET" path="avatar.aspx" type="AspNetForums.Components.HttpHandler.AvatarHttpHandler, AspNetForums.Components" />

 

              <add verb="GET" path="vcard.aspx" type="AspNetForums.Components.HttpHandler.VCardHttpHandler, AspNetForums.Components" />

 

         </httpHandlers>

 

         <authentication mode="Forms">

 

              <forms name=".AspNetForums" protection="All" timeout="60" loginUrl="login.aspx" />

 

         </authentication>

 

     </system.web>

 

     <!-- Asp.Net Forums 应用程序配置 -->

 

     <forums>

 

    

 

         <forums

 

              defaultProvider="SqlForumsProvider"      

 

              defaultLanguage="zh-CN"

 

              forumFilesPath="/"

 

              disableEmail="false"

 

              disableIndexing="true"

 

              disableThreading="false"

 

              threadIntervalStats="15"

 

              threadIntervalEmail="15"

 

              passwordEncodingFormat="unicode"

 

              smtpServerConnectionLimit="-1"

 

              enableLatestVersionCheck="false"

 

              uploadFilesPath="/Upload/"

 

         >

 

 

              <providers>

 

 

                   <clear/>

 

                  

 

                   <add

 

                       name = "SqlForumsProvider"

 

                       type = "AspNetForums.Data.SqlDataProvider, AspNetForums.SqlDataProvider"

 

                       connectionString = "server=kokey.;database=Forums;uid=sa;pwd=sa"

 

                       databaseOwner = "dbo"

 

                   />

 

 

              </providers>

 

 

                        <extensionModules>

 

                   <add name="PassportAuthentication"

 

                       extensionType="Security"

 

                       type="Telligent.CommunityServer.Security.PassportAuthentication, Telligent.CommunityServer.SecurityModules"

 

                   />

 

                   <add name="WindowsAuthentication"

 

                       extensionType="Security"

 

                       type="Telligent.CommunityServer.Security.WindowsAuthentication, Telligent.CommunityServer.SecurityModules"

 

                       allowAutoUserRegistration="false"

 

                       adminWindowsGroup="Administrators"

 

                       assignLocalAdminsAdminRole="false"

 

                   />

 

                        </extensionModules>

 

         </forums>

 

     </forums>

 

     <!-- END - AspNetForums configuration settings -->

 

    

 

     <!-- Asp.Net Forums 访问权限设置 -->

 

     <!—这里是对于特别的几个文件的权限设置,注意”?” 是通配符,表示匿名访问à

 

     <location path="EditPost.aspx">

 

         <system.web>

 

              <authorization>

 

                   <deny users="?" />

 

              </authorization>

 

         </system.web>

 

     </location>

 

 

     <location path="PostAttachmentManager.aspx">

 

         <system.web>

 

              <authorization>

 

                   <deny users="?" />

 

              </authorization>

 

         </system.web>

 

     </location>

 

 

     <location path="PrivateMessage.aspx">

 

         <system.web>

 

              <authorization>

 

                   <deny users="?" />

 

              </authorization>

 

         </system.web>

 

     </location>

 

    

 

     <location path="Download.aspx">

 

         <system.web>

 

              <authorization>

 

                   <deny users="?" />

 

              </authorization>

 

         </system.web>

 

     </location>

 

 

     <location path="License.aspx">

 

         <system.web>

 

              <authorization>

 

                   <deny users="?" />

 

              </authorization>

 

         </system.web>

 

     </location>

 

 

 

</configuration>

 

 

 

 

 

 

至此,所有的Web.config都已经被配置好了。现在开始在程序中引用Web.config中的节点。

 

ForumConfiguration类里是这样处理的。

 

首先

 

public class ForumConfiguration {

 

… …

 

    public static ForumConfiguration  GetConfig() {

 

    return (ForumConfiguration) ConfigurationSettings.GetConfig("forums/forums");

 

}

 

//注意这里用到了ConfigurationSettings sealed GetConfig() 方法,它是用来返回用户自定义的配置节的配置设置的方法。

 

public static object GetConfig( string sectionName );//sectionName 要读取的配置节。

 

 

 

 

// 实现IconfigrationSectionHandler接口,此接口只有一个方法Create,用来分析配置节的 XML。返回的对象被添加到配置集合中,并通过 GetConfig 访问。

 

    internal class ForumsConfigurationHandler : IConfigurationSectionHandler {

 

 

        public virtual object Create(Object parent, Object context, XmlNode node) {

 

            ForumConfiguration config = new ForumConfiguration();

 

            config.LoadValuesFromConfigurationXml(node);

 

            return config;

 

        }

 

}

 

 

好了,今天对于Web.config的学习到此结束。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值