Webconfig介紹

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

相關文章
相關標籤/搜索