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"];

原文地址:https://www.cnblogs.com/jiangyuxuan/p/1972410.html