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