zoukankan      html  css  js  c++  java
  • asp.net Webconfig

    Web.config
    <!--
     说明:
     1.所有的配置都必须被放在<configuration>和</configuration>标记之中.
     2.<appSettings>和</appSettings>之间是自定义配置,通常用来自己设置一些常量,Add添加常量,Key是常量的名称,
       value是常量的值.
       <appSettings>
         <add key="con" value="server=.;database=northwind;uid=sa;pwd=;"></add>
       </appSettings>
    在程序中可以用System.Configuration.ConfigurationSettings.AppSettings["con"]取值
      SqlConnection con=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["con"]);
      con.Open();
      SqlCommand cmd=new SqlCommand("select * from employees",con);
      this.DataGrid1.DataSource=cmd.ExecuteReader();
      this.DataGrid1.DataBind();

     3.<system.web>和</system.web>之间的标记是关于整个应用程序的设置.
      如 <pages buffer="true"/> 使用页缓冲
     4.<location>和</location>是一个区域标记.Path="aaa"表示下面的设置只对该文件有效.
    -->

    customErrors设置(在<system.web>和</system.web>之间)
    语法
    <customErrors
      defaultRedirect="url"
      mode="On|Off|RemoteOnly">
      <error statusCode="statuscode" redirect="url"/>
    </customErrors>
    身份验证和授权
    身份验证类型: WINDOWS 描述: WINDOWS 身份难作为默认的身份验证模式.用于任何形式的IIS身份验证
    身份验证类型: FORMS 描述: 基于APS.NET窗体的身份验证作为默认的身份验证模式
    身份验证类型: PASSPORT 描述:Microsoft Passport身份验证作为默认的身份验证模式
    身份验证类型: NONE 描述: 没有身份验证.用于匿名用户和可以提供其自己的身份验证的应用程序.
    <configuration>
     <system.web>
      <authentication mode="Windows|Forms|Passport|None">?
        <forms name="name" loginUrl="url"
          protection="All|NOne|Encryption"
          timeout="xx" path="/">?
           <credentials passwordFormat="Clear|SHA1|MD5">
            <user name="用户名" password="密码"/>
           </credentials>
          </forms>?
         <passport redirectUrl="internal"/>?
        </authentication>
     </system.web>
    </configuration>

    //基于forms先把IIS中该应用的匿名访问去掉
    <forms>标记的属性
    属性      选项          描述
    name       None        登录身份验证的Cookie名称
    loginUrl   None        登录页URL.如果没有身份验证Cookie,客户端将被重定向到此URL
    protection ALL         应用程序同时使用数据验证和加密来保护Cookie
               None        加密和验证都禁用
    timeout                一段时间(按分钟计),这段时间之后身份验证Cookie将到期,默认值为30
    path                   由应用程序发布的Cookie的路径.默认值是反斜杠(/)

    <authentication mode="Forms">
     <forms name="YourCookieName" loginUrl="login.aspx" protection="ALL"></forms>
    </authentication>
    //授权
    <authorization>
     <allow users="?"/>        //<allow users="*"/><!--允许所有用户 -->
      <!--
       <allow users="[逗号分隔的用户列表]"
              roles="[逗号分隔的角色列表]"/>
       <deny users="[逗号分隔的用户列表]"
              roles="[逗号分隔的角色列表]"/>
     -->
    </authorization>

    //login.aspx
    登录代码
    //连接数据库进行验证
    if(true)//用户名是否合法
    {
    // System.Web.Security.FormsAuthentication.SetAuthCookie(this.TextBox1.Text,false);//指定的用户名写入到Cookie中(false临时Cookie,true永久Cookie)
    // Response.Redirect("");
     System.Web.Security.FormsAuthentication.RedirectFromLoginPage(this.TextBox1.Text,false);//转到用户原访问的页
    //如果为true,可用System..Web.Security.FormsAuthentication.SignOut();删除,以后又要求登录
    }
    else
    {
     Response.Write("用户不合法");
    }

    //如果用户少的话,可以不用数据库,直接允许/拒绝用户
    <authentication mode="Forms"
     <forms name="authCre" loginUrl="login.aspx" protection="ALL">
      <credentials passwordFormat="Clear">
       <user name="aaa" password="aaa"/>
       <user name="bbb" password="bbb"/>
      </credentials>
     </forms>
    </authentication>
     登录代码
    private void Button1_Click(object sender,System.EventArgs e)
    {
     if(System.Web.Security.FormsAuthentication.Authenticate(this.TextBox1.Text,This.TextBox2.Text)
     {
    //   System.Web.Security.FormsAuthentication.SetAuthCookie(this.TextBox1.Text,true);//此方法需重定向
    //   Response.Redirect("WebForm1.aspx");
       System.Web.Security.FormsAuthentication.RedirectFromLoginPage(this.TextBox1.Text,false);//此方法不需要重定向,直接转到原访问页
     }
     else
     {
      Response.Write("用户不合法");
     }
    }
    //授权时,通配符*表示任何人,?表示匿名

     

     

    -------------

     

    14.2.2  ASP.NET配置元素

    由14.2.1节的介绍可以看出,ASP.NET应用程序配置文件Web.config中定义了很多配置元素处理程序声明和配置元素处理程序。本节主要介绍这些配置元素。

    1.<configuration>

    所有Web.config的根元素都是<configuration>标记,在它内部封装了其他所有配置元素。它的语法如下:

    <configuration>

           <!- configuration settings would go here. -->

    </configuration>

    2.<configSections>

    该配置元素主要用于自定义的配置元素处理程序声明。所有的配置元素处理程序声明都在这部分。它由多个<section>构成。<section>主要有name和type两种属性。

    —  name:指定配置数据元素的名称。

    —  type:指定与name属性相关的配置处理程序类。

    <configSections>节配置范例如下:

    <configuration>

          <configSections>

                      <section name="sessionState"

                        type="System.Web.SessionState.SessionStateSectionHandlers,

                         System.Web,Version=1.0.3300.0,Culture=neutral,

                         PublicKeyToken=b03f5f7f11d50a3a"

                  />

          </configSections>

    </configuration>

    3.<appSettings>

    在<appSettings>元素中可以定义自己需要的应用程序设置项,这充分反映了ASP.NET应用程序配置具有可扩展性的特点。

    <appSettings>节语法如下:

    <configuration>

    <appSettings>

                <add key="[key]" Value="[Value]" />

          </appSettings>

    </configuration>

    它的<add>子标记主要有两种属性定义:Key和Value。

    —  Key:指定该设置项的关键字,便于在应用程序中引用;

    —  Value:指定该设置项的值。

    下面给出一个范例:检索<appSettings>节中的设置。

    第一步:在Web.config文件中配置<appSettings>节。

    <configuration>

          <appSettings>

                <add key="appUser" Value="localhost" />

          </appSettings>

    </configuration>

    第二步:在Web页面中检索<appSettings>节的设置。

    <html>

    <head></head>

    <body>

    <b>User Name:</b>

    <%=ConfigurationSettings.appSettings("appUser") %><br>

    </body>

    </html>

    在第二步中,用ConfigurationSettings.appSettings方法调用Web.config文件中的设置,输出结果为“localhost”。

    该方法对访问<appSettings>元素中的应用程序设置非常方便,只需要提供检索的设置值对应的关键字即可,如上述代码。

    4.<compilation>

    该配置节位于<system.Web>标记中,用于定义使用哪种语言编译器来编译Web页面,以及编译页面时是否包含调试信息。它主要对以下4种属性进行设置。

    —  defaultLanguage:设置在默认情况下Web页面的脚本块中使用的语言。支持的语言有Visual Basic.Net,C#和Jscript。可以选择其中一种,也可以选择多种,方法是使用一个由分号分隔的语言名称列表,如Visual Basic.Net;C#。

    —  debug:设置编译后的Web页面是否包含调试信息。其值为true时将启用ASPX调试;为false时,不启用,但可以提高应用程序运行时的性能。

    —  explicit:是否启用Visual Basic显示编译选项功能。其值为true时启用,false时不启用。

    —  strict:是否启用Visual Basic限制编译选项功能。其值为true时启用,false时不启用。

    <compilation>元素配置范例如下:

    <configuration>

    <system.web>

         <compilation

              defaultLanguage="c#"

              debug="true"

              explicit="true"

         strict="true"

    />

    </system.web>

    </configuration>

    在<compilation>元素中还可以添加<compiler>,<assemblies>,<namespaces>等子标记,它们的使用可以更好地完成编译方面的有关设置。这里就不再详述了。

    5.<customErrors>

    该配置元素用于完成两项工作:一是启用或禁止自定义错误;二是在指定的错误发生时,将用户重定向到某个URL。它主要包括以下两种属性。

    —  mode:具有On,Off,RemoteOnly 3种状态。On表示启用自定义错误;Off表示显示详细的ASP.NET错误信息;RemoteOnly表示给远程用户显示自定义错误。一般来说,出于安全方面的考虑,只需要给远程用户显示自定义错误,而不显示详细的调试错误信息,此时需要选择RemoteOnly状态。

    —  defaultRedirect:当发生错误时,用户被重定向到默认的URL。

    另外,<customErrors>元素还包含一个子标记——<error>,用于为特定的HTTP状态码指定自定义错误页面。它具有以下两种属性。

    —  statusCode:自定义错误处理程序页面要捕获的HTTP错误状态码。

    —  redirect:指定的错误发生时,要重定向到URL。

    <customErrors>元素配置范例如下:

    <configuration>

    <system.web>

          <customErrors

               mode=" RemoteOnly"

               defaultRedirect="defaultError.aspx"

                <error statusCode="400"

     redirect=Errors400.aspx />

    <error statusCode="401"

                redirect=Errors401.aspx />

    />

    </system.web>

    </configuration>

    6.<globalization>

    该配置元素主要完成应用程序的全局配置。它主要包括以下3种属性。

    —  fileEncoding:用于定义编码类型,供分析ASPX,ASAX和ASMX文件时使用。它可以是下述任何编码类型。

    (1)UTF-7:Unicode UTF-7字节编码技术。

    (2)UTF-8:Unicode UTF-8字节编码技术,这也是最常用的基于Web的Unicode格式。

    (3)UTF-16:Unicode UTF-16字节编码技术。

    (4)ASCII:标准ASCII码。

    —  requestEncoding:指定ASP.NET处理的每个请求的编码类型,其可能的取值与fileEncoding特性相同。

    —  responseEncoding:指定ASP.NET处理的每个响应的编码类型,其可能的取值与fileEncoding特性相同。

    <globalization>节配置范例如下:

    <configuration>

    <system.web>

           <globalization

                 fileEncoding="utf-8"

                 requestEncoding="utf-8"

                 responseEncoding="utf-8"

           />

    </system.web>

          </configuration>

    7.<sessionState>

    该配置用于完成ASP.NET应用程序的会话状态设置。它主要有以下5种属性。

    —  mode:指定会话状态的存储位置。共有Off,Inproc,StateServer和SqlServer 4种状态。Off表示禁用会话状态;Inproc表示在本地保存会话状态;StateServer表示在远程状态服务器上保存会话状态;SqlServer表示在SQL Server中保存会话状态。

    —  stateConnectionString:用来指定远程存储会话状态的服务器名和端口号。在将模式mode设置为StateServer时,需要用到该属性。默认为本机。

    —  sqlConnectionString:指定保存状态的SQL Server的连接字符串。在将模式mode设置为SqlServer时,需要用到该属性。

    —  Cookieless:指定是否不使用客户端cookie保存会话状态。设置为true表示不使用;false为使用。

    —  timeout:用来定义会话空闲多少时间后将被中止。默认时间一般为20分钟。

    <sessionState>节配置范例如下:

    <configuration>

    <system.web>

       <sessionState

           mode="SqlServer"

           stateConnectionString="tcpip=127.0.0.1:8080"

           sqlConnectionString="data source=127.0.0.1; user id=sa; password="

           Cookieless="false"

           Timeout="25"

    />

    </system.web>

    </configuration>

    8.<trace>

    该配置元素用来实现ASP.NET应用程序的跟踪服务,在程序测试过程中定位错误。其主要属性如下。

    —  enabled:指定是否启用应用程序跟踪功能。true为启用;false为禁用。

    —  requestLimit:指定保存在服务器上请求跟踪的个数。默认值为10。

    —  pageOutput:指定是否在每个页面的最后显示应用程序的跟踪信息。true为显示;false为不显示。

    —  traceMode:设置跟踪信息输出的排列次序。默认为SortByTime(时间排序),也可以定义为SortByCategory(字母排序)。

    —  localOnly:指定是否仅在Web服务器上显示跟踪查看器。true为仅在服务器控制台上显示跟踪查看器;false为在任何客户端上都显示跟踪输出信息,而不仅是在Web服务器上。

    <trace>元素配置范例如下:

    <configuration>

    <system.web>

          <trace

                enabled="true"

                requestLimit="20"

                pageOutput="true"

                traceMode="SortByTime"

                localOnly="false"

    />

    </system.web>

    </configuration>

    9.<authentication>

    该配置元素主要进行安全配置工作。它最常用的属性是mode,用来控制ASP.NET Web应用程序的验证模式,可以设置为以下任一种值。

    —  Windows:用于将Windows指定为验证模式。

    —  Forms:采用基于ASP.NET表单的验证。

    —  Passport:采用微软的Passport验证。

    —  None:不采用任何验证方式。

    另外,<authentication>元素还有一个子标记<forms>,使用该标记可以对cookie验证进行设置。它包含以下5种属性。

    —  name:用于验证的cookie名称。如果一台机器上有多个应用程序使用窗体验证,每个应用程序的cookie名称必须不同。

    —  loginUrl:未通过cookie验证时,将用户重定向到URL。

    —  protection:指定cookie的数据保护方式。它有All,None,Encryption和Validation共4个值。其中,All(默认值)表示对cookie进行加密和数据验证;None表示不保护cookie,这种网站只将cookie用于个性化,安全要求较低;Encryption表示对cookie进行加密,不进行数据保护;Validation表示对cookie验证数据,不进行加密。

    —  timeout:指定cookie失效的时间,超时后将需要重新进行登录验证获得新的cookie。单位为分钟。

    —  path:指定Web应用程序创建的cookie的有效的虚拟路径。

    <authentication>元素范例如下:

    <configuration>

    <system.web>

                <authentication mode="Forms" >

                       <forms name=".FormsAuthCookie"

                                loginUrl="login.aspx"

                                protection="All"

                                timeout="10"

                                path="pathForCookie"

                       />

                 />

    </system.web>

    </configuration>

    在实际应用中,ASP.NET应用程序的安全配置使用非常广泛,且很有用。

    14.2.3  自定义应用程序设置的配置和检索

    前面介绍ASP.NET应用程序配置系统的优点时,曾指出该配置系统是可扩展的。用户不仅可以使用系统预定义的元素,还可以在Web.config文件中添加自定义标记,创建自己的配置处理程序和设置。

    1.<appSettings>

    Web.config文件中有一个可选标记<appSettings>,专门用于存放应用程序设置。该应用程序的任何页面都可以访问到该Web.config文件中的应用程序设置。如果要修改设置,只要在配置文件中进行修改就行,无须逐个修改应用程序的每个页面。

    下面请看一个简单的例子,以加深对Web.config文件中扩展应用程序配置信息的理解。

    <configuration>

     <appSettings>

    <add key="MySettings" value="扩展应用程序配置信息" />

          </appSettings>

    </configuration>

    在上面的Web.config文件中,设置了一个字符串,关键字为MySettings,键值为“扩展应用程序配置信息”。

    在.NET类库中有一个System.Configuration.ConfigurationSettings类,利用它可以检索任意配置节的数据信息。ConfigurationSettings类有一个AppSettings属性,利用该属性可以检索<appSettings>节的信息,方法如下:

    string sqlconn=ConfigurationSettings.AppSettings["MySettings"];

    2.自定义标记

    在Web.config文件中并不限于通过预定义的标记<appsettings>来保存配置信息,Web.config的格式也允许用户添加新的自定义标记。在该标记内,可定义新的配置信息。

    下面请看实例,创建一个节存储数据库连接字符串。

    <configuration>

       <configSections>

         <section name="OwnSettings"

           type="System.Configuration.NamueFileSectionHandler,

           System.Web,Version=1.0.3300.0,Culture=neutral,

           PublicKeyToken=b77a5c561934e089" />

       </configSections>

       <OwnSettings>

     <add key="constring" Value="访问自定义的配置信息"/>

      </OwnSettings>

    </configuration>

    上述代码的配置过程可以分为两步。

    第一步:在<configSections>中,声明了一个新的自定义配置元素处理程序,即声明自定义标记的名称(<OwnSettings>)和类型(System.Configuration.NamueFileSection Handler)。注意,由于自定义标记并不是machine.config文件设定的默认配置,所以需要定义该标记的类型(在自定义标记内,可以使用任何System.Configuration类支持的类型)。

    第二步:在<configSections>域之后,为声明的标记(<OwnSettings>)做实际的应用程序配置。

    可以使用ConfigurationSettings.GetConfig()方法访问自定义标记。该方法接受自定义标记名称(<OwnSettings>)作为参数,键的名称("constring")作为标记的属性,方法如下:

    string myConn= (string)ConfigurationSettings.GetConfig ("OwnSettings") ["constring"];

  • 相关阅读:
    linux screen 命令详解
    centos7 安装docker(手动和脚本安装)换源 卸载
    在linux上安装taiga
    阿里云清除云盾
    Vim
    推荐 130 个令你眼前一亮的网站,总有一个用得着
    索引优化分析 2
    Mysql的主存复制 5
    Mysql锁机制 4
    查询获取分析 3
  • 原文地址:https://www.cnblogs.com/jiangyuxuan/p/1972410.html
Copyright © 2011-2022 走看看