ASP.NET 2.0網頁製作徹底研究

Download Report

Transcript ASP.NET 2.0網頁製作徹底研究

第4章 ASP.NET的HTTP物件、
輸出入與Cookie處理








4-1
4-2
4-3
4-4
4-5
4-6
4-7
4-8
HTTP通訊協定的特性
HTTP物件與Server物件
基本輸出的Response物件
基本輸入的Request物件
Cookies的處理
伺服器與瀏覽程式資訊
Include指令的使用
ASP.NET程式的除錯
4-1 HTTP通訊協定的特性-標頭
HTTP通訊協定的標頭
 HTTP通訊協定傳送的資料並不是只有網址,
在HTTP「標頭」(Header)資訊儲存有
瀏覽程式版本、時間和表單欄位等資料。
 Web伺服器在處理瀏覽程式請求時,首先
檢查網頁是否存在,接著處理HTTP標頭,
依照副檔名判斷是否為ASP.NET程式,如
果是,就編譯且執行它,並且將標頭傳送
給ASP.NET程式。
4-1 HTTP通訊協定的特性-特性
HTTP通訊協定的特性
 HTTP是一種在Client/Server架構傳送資料的通
訊協定,其特性如下所示:
• HTTP通訊協定並不會持續保持連接:當瀏覽程式提出
請求時,才會建立連接,在請求後就斷線等待回應,
每一次請求和回應都需要先建立連線。
• HTTP通訊協定不會保留狀態:因為HTTP通訊協定並
不會保持連線,所以連線時,伺服端和客戶端互相知
道對方,一旦請求結束,就互不相干。
• HTTP通訊協定與資料型態無關:任何種類的資料型態,
都可以透過HTTP通訊協定來傳送。
4-2 HTTP物件與Server物件



4-2-1 HTTP物件的說明
4-2-2 Server物件的屬性
4-2-3 Server物件的方法
4-2-1 HTTP物件的說明-1



Response物件:即HttpResponse類別,可以
輸出網頁內容的標籤或處理Cookies,然後送到
瀏覽程式顯示,或是控制網頁轉址,從一頁網頁
轉址至其他網頁。
Request物件:即HttpRequest類別,可以讀取
表單欄位送出的資料或URL參數、Cookies和取
得伺服器的變數。
Server物件:即HttpServerUtility類別,可以
建立COM物件、執行其他ASP.NET程式和HTML
和處理URL編碼。
4-2-1 HTTP物件的說明-2


Application物件:即HttpApplicationState類
別,瀏覽網站的所有使用者都可以透過此物件取
得一些共享資料。例如:網站的訪客計數。
Session物件:即System.Web.SessionState
名稱空間的HttpSessionState類別,對於瀏覽網
站的每位使用者,可以使用此物件保留使用者的
專屬資料。例如:使用者登入網站的使用者名稱
(Username)和密碼(Password)。
4-2-2 Server物件的屬性

Server物件的屬性可以取得Web伺服器名
稱,和設定或取得逾時時間,其相關屬性
如下表所示:
屬性
MachineName
ScriptTimeout
說明
取得 Web 伺服器的名稱字串
設定和取得執行 ASP.NET 的逾時時間,以秒為單位
4-2-3 Server物件的方法Server.MapPath()方法

Server.MapPath()方法可以將伺服器的虛擬路
徑,轉換為實際硬碟的檔案路徑。例如:使用
Server.MapPath()方法取得指定ASP.NET程式
的實際路徑,其程式碼如下所示:
Dim path As String
path = Server.MapPath("/Ch04/Ch4-2-2.aspx")

程式碼取得網站Ch4-2-2.aspx的實際路徑。除
了檔案外,我們也可以取得虛擬目錄的實際路徑。
例如:取得Web伺服器虛擬目錄的實際路徑,如
下所示:
path1 = Server.MapPath("/")
path2 = Server.MapPath("/Ch04")
4-2-3 Server物件的方法Server.CreateObject()方法

Server.CreateObject()方法可以在伺服端建立
COM元件。例如:舊版ASP的
FileSystemObject物件,就可以使用
CreateObject()方法來建立物件,如下所示:
<%
Dim fso, file As Object
Dim str As String
' 建立FileSystemObject物件
fso = Server.CreateObject("Scripting.FileSystemObject")
file = fso.OpenTextFile( _
Server.MapPath("Ch4-2-3.txt"), 1, False)
str = file.ReadAll() ' 讀取檔案內容
Response.Write("檔案內容: " & str & "<br>")
%>
4-2-3 Server物件的方法Server.Transfer()方法

Response.Redirect()方法浪費相當多頻
寬在瀏覽程式和Web伺服器間的通訊,
Server.Transfer()方法的轉址操作完全在
Web伺服器完成,並不會浪費頻寬,其使
用方式和Response.Redirct()幾乎相同,
如下所示:
Server.Transfer("Ch4-2-2.aspx")
4-2-3 Server物件的方法Server.Execute()方法


Server.Execute()方法有些像在主程式呼叫副程
式,當轉址ASP.NET程式執行完成後,還會回到
呼叫轉址的ASP.NET程式。例如:ASP.NET程式
Ch4-2-3Execute.aspx的程式碼,如下所示:
Response.Write("ASP.NET 2.0的")
Server.Execute("Ch4-2-3Sub.aspx")
Response.Write("提供的轉址功能<p>")
程式碼可以轉址至ASP.NET程式Ch4-23Sub.aspx,其程式碼如下所示:
Response.Write("Server物件")
4-2-3 Server物件的方法Server.HtmlEncode()和HtmlDecode()方法

Server.HtmlEncode()方法可以將指定字串使用
HTML編碼方式進行編碼,然後配合
Server.HtmlDecode()方法進行解碼,如下所示:
Dim str As String
str = "<p>ASP.NET 2.0網頁製作徹底研究</p>"
str = Server.HtmlEncode(str) ' 編碼
Response.Write(str & "<br>")
str = Server.HtmlDecode(str) ' 解碼
Response.Write(str & "<br>")
4-2-3 Server物件的方法Server.UrlEncode()和UrlDecode()方法

Server.UrlEncode()方法可以將指定字串使用
URL編碼方式來進行編碼,如果URL參數需要傳
遞特殊符號。例如:「#」、「?」和「&」等字
元,就需要使用此方法進行編碼處理,如下所示:
<a href="Ch4-2-3Url.aspx?name=陳會安? & #">
沒有編碼</a>
<a href="Ch4-2-3Url.aspx?name=
<%=Server.UrlEncode("陳會安? & #")%>">
有編碼</a>
4-3 基本輸出的Response物件




4-3-1
4-3-2
4-3-3
4-3-4
輸出網頁到瀏覽程式
輸出圖片到瀏覽程式
緩衝區的處理
IIS輸出與瀏覽程式快取的控制
4-3-1 輸出網頁到瀏覽程式Response.Write()方法1

Response.Write()方法可以將任何資料型
態的資料,輸出到瀏覽程式顯示,換句話
說,就是輸出成HTML標籤,如下所示:
Dim str As String = "星期三"
Response.Write("<center><h2>我的首頁
</h2></center>")
Response.Write("<hr>")
Response.Write("<p>今天是: " & str &"</p>")
4-3-1 輸出網頁到瀏覽程式Response.Write()方法2

另一種方式是保留HTML標籤,只是在標籤
需要取代的部分輸出變數值,其程式碼如
下所示:
<p>今天是: <%= str%></p>

程式碼是Response.Write()方法的簡化寫
法。換句話說,透過Response.Write()方
法,就能夠依照程式碼輸出所需的網頁內
容。
4-3-1 輸出網頁到瀏覽程式Response.Redirect()方法

Response.Redirect()方法可以將網頁轉
址到其他的URL網址或網頁,因為會轉址
到其他網頁,所以網頁內容並沒有顯示機
會,其他多餘的HTML標籤都可以刪除掉,
如下所示:
<%
Response.Redirect("Ch4-3-1Write.aspx")
%>
4-3-2 輸出圖片到瀏覽程式Response.ContentType屬性

HTTP通訊協定基本上與資料型態無關,不
過在傳送資料前,我們可以指定資料型態,
即ContentType屬性,如下所示:
Response.ContentType = "image/gif"

程式碼指定網頁內容是GIF圖檔。
4-3-2 輸出圖片到瀏覽程式Response.BinaryWrite()方法

當HTTP通訊協定傳送內容設定成圖片等二
進位資料時,我們並不是使用Write()方法,
而是使用BinaryWrite()方法來輸出二進位
資料,如下所示:
Dim buffer(objStream.Length) As Byte
' 讀取圖檔內容
objStream.Read(buffer, 0,
objStream.Length)
objStream.Close() ' 關閉串流
Response.BinaryWrite(buffer) ' 輸出圖檔
4-3-2 輸出圖片到瀏覽程式Response.Charset屬性

Response.Charset可以取得或指定網頁
的編碼方式,例如:中文Big5,如下所示:
Response.Charset = "big5"
4-3-2 輸出圖片到瀏覽程式Response.WriteFile()方法

Response.WriteFile()方法可以將指定檔
案內容作為HTTP通訊協定的輸出內容,如
下所示:
Response.WriteFile("Ch4-3-2.txt")

程式碼是將Ch4-3-2.txt檔案內容輸出到瀏
覽程式。
4-3-3 緩衝區的處理-說明1

在ASP.NET程式範例Ch4-3-3.aspx的開
頭設定BufferOutput屬性,如下所示:
<% Response.BufferOutput = False %>
<html>
………
<%
Response.Redirect("Ch4-3-1Write.aspx")
%>
………

程式碼的BufferOutput屬性設為False,
表示不使用緩衝區。
4-3-3 緩衝區的處理-說明2

此時Response.Redirect()方法如果是插
在HTML標籤中,即在<html>~</html>
標籤間,就會出現錯誤訊息,如下圖所示:
4-3-3 緩衝區的處理-說明3


訊息指出已經寫入瀏覽程式的標題,將無
法進行更改,這主要是因為緩衝區的問題。
因為伺服器在處理ASP.NET程式碼時,是
將處理的結果先暫時存在緩衝區,等到輸
出完整個網頁內容後,才送到瀏覽程式顯
示,或是在ASP.NET程式執行Flush()或
End()方法強迫將緩衝區的內容送出到瀏覽
程式。
4-3-3 緩衝區的處理Response.BufferOutput屬性

Response.BufferOutput屬性可以指定是
否使用緩衝區,預設是True使用,如果不
使用緩衝區,請設為False,如下所示:
Response.BufferOutput = False
4-3-3 緩衝區的處理Response.End()方法

Response.End()方法可以中斷ASP.NET程式的
執行,例如:在ASP.NET使用Response.Write()
方法輸出內容時,執行End()方法可以中斷程式
執行且觸發Application_EndRequest事件。只
需在ASP.NET程式需要中斷的地方加入此程式碼,
如下所示:
………
Response.End()
………

ASP.NET程式位在Response.End()之後的程式
碼就不會執行,而且會將緩衝區的內容馬上送到
瀏覽程式顯示。
4-3-3 緩衝區的處理Response.Flush()方法

Response.Flush()方法可以將目前緩衝區
內容強迫送到瀏覽程式顯示,也就是清空
緩衝區內容,其程式碼如下所示:
Response.Flush()

當ASP.NET執行到上述程式碼,不論是否
已經完全輸出到緩衝區,都會強迫將目前
緩衝區內容送到瀏覽程式顯示,我們可以
重複使用此方法來送出緩衝區內容。
4-3-3 緩衝區的處理Response.Clear()方法

Response.Clear()方法可以清空緩衝區內
容,但是不含HTTP通訊協定的標頭,使用
此方法可以避免看到Clear()方法前的網頁
內容,如下所示:
Response.Clear()

程式碼會清除緩衝區內容,如同
Response.ClearContent()方法。如果需
要清除HTTP檔頭,請使用ClearHeaders()
方法,如下所示:
Response.ClearHeaders()
4-3-4 IIS輸出與瀏覽程式快取的控制
-說明1


「快取」(Caching)是一種技術可以將網頁輸
出內容或應用程式資料暫時儲存在客戶或伺服端,
以便當重複請求相同資訊的網頁時,可以加速網
頁顯示,特別適用在多次網頁請求,而且都是請
求相同網頁內容的情況。
客戶端快取是將網頁內容保留在使用者電腦的快
取資料夾,如果在快取中已經擁有網頁,就直接
顯示網頁內容,Response物件的屬性可以設定
網頁檔案儲存在快取資料夾的保留時間。
4-3-4 IIS輸出與瀏覽程式快取的控制
-說明2

IIS的「輸出快取」(Output Cache)是
當第一次編譯ASP.NET程式時,先將執行
的結果儲存在輸出快取,然後輸出到瀏覽
程式,當有其他請求時,如果程式沒有更
改或快取中已經存在,就直接從快取將網
頁資料送到客戶端,以便增加網頁瀏覽效
率。
4-3-4 IIS輸出與瀏覽程式快取的控制
-Response.Expires屬性

Response.Expires屬性可以設定和取得網
頁保留在瀏覽程式快取的分鐘數,如下所
示:
Response.Expires = 3

上述程式碼設定保留時間為3分鐘,如果設
為0,表示不保留在快取。
4-3-4 IIS輸出與瀏覽程式快取的控制
-Response.ExpiresAbsolute屬性

Response.ExpiresAbsolute屬性可以指
定和取得網頁保留期限的日期和時間,其
程式碼如下所示:
Response.ExpiresAbsolute = #December
31, 2007 24:00:00#

屬性值是DateTime資料型態,請使用#符
號括起,上述的保留期限是2007年底。
4-3-4 IIS輸出與瀏覽程式快取的控制
-Response.Cache屬性

ASP.NET程式如果需要新增到輸出快取,可以直
接使用OutputCache指引指令定義快取期限的規
則,如下所示:
<%@ OutputCache Duration=60
VaryByParam="none“
Location="Any" %>

上述指引指令的屬性說明,如下所示:
• Duration屬性:指定網頁儲存在輸出快取的時間,以
秒為單位。
• VaryByParam屬性:當網頁擁有不同URL參數,指定
哪些網頁需要新增至快取。
4-3-4 IIS輸出與瀏覽程式快取的控制
-HttpCachePolicy物件的使用1

當ASP.NET程式使用程式碼設定期限時,我們可
以使用Response.Cache屬性取得網頁輸出快取
的HttpCachePolicy物件,內含相關方法可以控
制ASP.NET網頁的輸出快取,如下表所示:
方法
SetExpires(DateTime)
SetCacheability(HttpCacheability)
SetNoServerCaching()
說明
指定快取期限,即 Duration 屬性
指定快取控制方式,即 Location 屬性
停止伺服端新增快取的操作
4-3-4 IIS輸出與瀏覽程式快取的控制
-HttpCachePolicy物件的使用2

在ASP.NET程式的快取設定需要位在Page物件的
Page_Load()事件處理程序,其程式碼如下所示:
<script runat="server">
Sub Page_Load(Sender As Object, E As
EventArgs)
Response.Cache.SetExpires( _
DateTime.Now.AddSeconds(30))
Response.Cache.SetCacheability( _
HttpCacheability.Public)
End Sub
</script>
4-4 基本輸入的Request物件



4-4-1 Form和QueryString的集合物件
4-4-2 使用表單欄位傳送資料
4-4-3 使用URL傳遞資料
4-4-1 Form和QueryString的集合物
件-說明

ASP.NET伺服端網頁技術需要透過客戶端網頁來
輸入資料。其輸入方式如下所示:
• HTML表單網頁:使用HTTP表單欄位以HTTP通訊協定
的標頭來傳遞資料,關於HTML表單相關標籤的說明,
請參閱書附光碟電子書「HTML與CSS網頁設計範例教
本」第11章。
• URL參數:從瀏覽程式輸入的URL網址參數傳遞,其
總長度只有1024個字元。

Request物件可以取得表單或URL參數傳至網頁
的資料,不論是表單欄位或是URL參數,都是使
用Request物件的Form和QueryString集合物
件來接收資料。
4-4-1 Form和QueryString的集合物
件-Form集合物件

HTML網頁表單如果是使用post方法傳遞資料,
其作法是將傳遞資料在編碼後,透過HTTP通訊協
定標頭傳送到Web伺服器,在伺服端是使用
Form集合物件來取出資料,其語法如下所示:
Request(("FieldName")
Request.Form("FieldName")

Request物件可以使用Form屬性取得Form集合
物件,或不指定屬性,在括號內的參數是欄位名
稱字串,可以取得指定表單欄位值的字串。
4-4-1 Form和QueryString的集合物
件-QueryString集合物件

HTML網頁表單如果是使用get方法傳遞資料,其
作法是將傳遞的資料編碼後,透過URL網址後的
字串傳送到Web伺服器,參數位在「?」問號之
後,如果參數不只一個,請使用「&」符號分隔,
如下所示:
http://localhost/Ch4-43.aspx?fname1=value1&fname2=value2

當瀏覽程式輸入上述網址,按下Enter鍵後,在
伺服端是使用QueryString集合物件來取出資料,
如下所示:
Request(("FieldName")
Request.QueryString(" FieldName")
4-4-2 使用表單欄位傳送資料

在建立好HTML網頁表單後,就可以撰寫
ASP.NET程式碼來取得表單欄位資料。表單處理
程式是使用Form集合物件來取得表單欄位值,如
下所示:
name1 = Request.Form.GetValues("Username")(0)
name2 = Request.Form.GetValues("Username")(1)
pass1 = Request.Form("Password1")
pass2 = Request("Password2")

程式碼使用GetValues()方法取得同名2個
Username欄位和Password1、Password2欄
位值,在括號內的名稱是表單欄位名稱。
4-4-3 使用URL傳遞資料
URL超連結傳遞的參數或表單get方法傳遞的內容,
都是使用QueryString集合物件來取得參數或欄
位值,如下所示:
name = Request.QueryString("Username")
pass = Request.QueryString("Password")
 程式碼左邊是儲存傳遞資料的變數,在右邊括號
內的名稱是參數或欄位名稱,這是一個字串。

4-5 Cookies的處理


4-5-1 Cookies的基礎
4-5-2 Cookies的操作函數
4-5-1 Cookies的基礎-說明


Cookies可以解決HTTP通訊協定無法保留資訊的
問題,雖然我們可以使用文字檔案、XML文件和
資料庫來儲存相關資料,但是對於成千上萬只來
一次或數次的訪客而言,儲存這些資料實在太浪
費硬碟空間,Cookies才是最佳的解決方案。
Cookies是儲存在客戶端,也就是瀏覽程式所在
的電腦,所以並不會浪費伺服器資源,只需使用
者進入網站時,就可以檢查客戶端是否有儲存
Cookies,透過Cookie儲存的資訊來建立複雜的
Web應用程式。
4-5-1 Cookies的基礎-使用



個人資訊:Cookies可以保留個人資訊,例如:
姓名、地址、時區、帳號和是否曾經造訪網站,
詳見第14章的說明。
個人化的資訊:Cookies可以建立個人化網站外
觀和個人偏好的網站內容,或者提供使用者有興
趣的資訊,詳見第14章的說明。
網站購物車:線上購物車需要儲存使用者選購的
商品,Cookies也可以用來記錄選購商品。
4-5-1 Cookies的基礎-問題




瀏覽程式是否支援Cookies:雖然Internet
Explorer和Netscape瀏覽程式都支援Cookies,
不過在IE 4.0前的版本,需要設定接受Cookies,
5.0之後的版本預設接受Cookies且使用者無法更
改,不過,仍然有少數使用者的瀏覽程式並不支
援Cookies。
Cookies可以刪除:因為Cookies是儲存在客戶
端電腦,所以可能在升級瀏覽程式或電腦軟體時,
破壞或刪除Cookies檔案。
Cookies可能修改:因為Cookies儲存在客戶端
電腦,使用者可以自己修改Cookies的內容,換
句話說,不可以使用Cookies儲存重要資訊。
Cookies能夠複製:Cookies檔案可以複製,當
然有可能被其他使用者複製或偷走。
4-5-2 Cookies的操作函數-新增
Cookie1

在ASP.NET是使用Response物件的Cookies集
合物件來新增Cookie,其程式碼如下所示:
Response.Cookies(cName).Value = _
Server.UrlEncode(cValue)


上述程式碼沒有Key鍵名,使用Server物件的
UrlEncode()方法進行編碼,以便正確處理中文
內容的Cookie。
如果Cookie擁有Key鍵名,在新增時需要使用鍵
名,如下所示:
Response.Cookies(cName)(cKey) = _
Server.UrlEncode(cValue)
4-5-2 Cookies的操作函數-新增
Cookie2

在建立好Cookie後,每一個Cookie是一個
HttpCookie物件,其常用屬性有Domain
屬性設定網域名稱,Path屬性指定Cookie
路徑,Expires指定有效期限,目前我們只
有設定Expires屬性,如下所示:
Response.Cookies(cName).Expires =
DateTime.Now.AddDays(cExpires)

程式碼使用DateTime.Now取得目前電腦
日期時間,然後使用AddDays()方法增加
有效期限的日數。
4-5-2 Cookies的操作函數-刪除
Cookie

刪除操作是將Expires屬性的有效日期設為
過期的一年前,如下所示:
Response.Cookies(cName).Expires = _
DateTime.Now.AddDays(-365)
4-5-2 Cookies的操作函數-取得
Cookie值

在ASP.NET程式取得Cookie值是使用Request物
件的Cookies集合物件,如下所示:
Server.UrlDecode(Request.Cookies(cName)(cKey))


程式碼擁有鍵名,取得的值使用Server物件的
UrlDecoder()方法進行解碼。
如果沒有鍵名是使用HttpCookie物件的Value屬
性取得其值,其程式碼如下所示:
Server.UrlDecode(Request.Cookies(cName).Value)
4-6 伺服器與瀏覽程式資訊



4-6-1 Web伺服器的系統資訊
4-6-2 取得瀏覽程式資訊
4-6-3 取得客戶端的憑證資料
4-6-1 Web伺服器的系統資訊-說明
Web伺服器的系統資訊可以使用Request物件的
ServerVariables屬性來取得,這是一個集合物
件,以參數的Server變數字串來取得指定的系統
資訊。例如:取得使用者IP位址和目前ASP.NET
程式的虛擬路徑,如下所示:
IPAddress =
Request.ServerVariables("REMOTE_ADDR")
strPath =
Request.ServerVariables("PATH_INFO")
 程式碼的參數就是需要取得的參數字串,也就是
Server變數名稱。

4-6-1 Web伺服器的系統資訊Server變數
Server 變數
ALL_HTTP
ALL_RAW
APPL_MD_PATH
APPL_PHYSICAL_PATH
AUTH_PASSWORD
AUTH_TYPE
AUTH_USER
CONTENT_LENGTH
CONTENT_TYPE
GATEWAY_INTERFACE
LOCAL_ADDR
PATH_INFO
PATH_TRANSLATED
QUERY_STRING
REMOTE_ADDR
REMOTE_HOST
REQUEST_METHOD
SCRIPT_NAME
SERVER_NAME
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
說明
傳送到瀏覽程式的 HTTP 通訊協定標頭內容
傳送到瀏覽程式的所有原始資料
Web 應用程式的伺服器路徑
Web 應用程式的實際路徑
認證密碼
認證方法,伺服器用來驗證使用者是否可以存取
保護程式的方式
認證的使用者名稱
客戶端傳送給伺服器文件內容的長度
客戶端傳送內容的資料型態
伺服端的 CGI 版本
客戶端的 IP 位址
目前 ASP.NET 程式檔的路徑
目前 ASP.NET 程式檔的實際路徑
URL 的參數資料
客戶端的 IP 位址
客戶端的的主機名稱
HTTP 的請求方法為 get、put 或 post
目前 ASP.NET 程式檔案的虛擬路徑
伺服器的網域名稱或 IP 位址
伺服器的 HTTP 埠號
伺服器的 HTTP 版本
伺服器使用的軟體
4-6-2 取得瀏覽程式資訊-說明
Request物件的Browser屬性可以取得
HttpBrowserCapabilities集合物件,即客戶端
瀏覽程式的相關資訊,以便得知瀏覽程式提供哪
些功能。
 在ASP.NET程式是使用Request物件的Browser
屬性來取得此物件,如下所示:
Dim hbc As HttpBrowserCapabilities =
Request.Browser
 程式碼在取得HttpBrowserCapabilities物件後,
就可以使用相關屬性來取得瀏覽程式支援的功能。

4-6-2 取得瀏覽程式資訊-屬性
屬性
Type
Browser
Version
MajorVersion
MinorVersion
Platform
Frames
Tables
Cookies
VBscript
Javascript
JavaApplets
ActiveXControls
說明
瀏覽程式的種類,IE 為 Internet Explorer,Netscape 為
Netscape Navigator
瀏覽程式的名稱
瀏覽程式的版本
版本小數點前的主版本編號
版本小數點後的次版本編號
使用的作業系統平台
瀏覽程式是否支援框架頁
瀏覽程式是否支援表格
瀏覽程式是否支援 Cookies
瀏覽程式是否支援 VBScript
瀏覽程式是否支援 JavaScript
瀏覽程式是否支援 Java Applets
瀏覽程式是否支援 ActiveX 控制項
4-6-3 取得客戶端的憑證資料-說明
Request.ClientCertificate屬性可以取得客戶端
的憑證資料,如下所示:
Dim hcc As HttpClientCertificate = _
Request.ClientCertificate
 上述程式碼在取得HttpClientCertificate物件後,
就可以使用相關屬性來取得憑證資料。例如:檢
查是否擁有客戶端憑證,如下所示:
Response.Write("是否有憑證: " & _
hcc.IsPresent & BR)
 程式碼可以取得IsPresent屬性的值,True表示
有,False表示沒有憑證。

4-6-3 取得客戶端的憑證資料-屬性
屬性
Certificate
Cookie
IsPresent
Issuer
IsValid
KeySize
SecretKeySize
SerialNumber
ServerIssuer
ServerSubject
Subject
ValidFrom
ValidUntil
說明
取得客戶端憑證的所有內容
如果有提供,取得唯一客戶端憑證的 ID
是否擁有客戶端憑證,True 為有,False 為沒有
客戶端憑證核發的單位資料
客戶端憑證是否有效
取得數位憑證金鑰的尺寸,例如:128 bits
取得數位憑證私鑰的尺寸,例如:1024 bits
憑證的序號
取得伺服器憑證核發單位的資料
取得伺服器憑證的主旨資料
取得客戶端憑證的主旨資料
憑證有效的起始日期時間
憑證有效的結束日期時間
4-7 Include指令的使用-include
virtual的使用

include virtual指令是使用Web伺服器虛擬目錄
的主目錄,作為根路徑的相對路徑來插入檔案。
例如:函式庫檔案CookiesLib.inc是位在Web伺
服器的主目錄,此時include virtual程式碼,如
下所示:
<!--#include virtual=”/CookiesLib.inc”-->

程式碼是使用Web伺服器的主目錄作為根目錄,
ASP.NET程式可以使用相同程式碼來插入函式庫
檔案。
4-7 Include指令的使用-include file
的使用

如果使用Include file指令,我們需要指明
檔案的絕對路徑,如下所示:
<!--#include file=”../CookiesLib.inc”-->

程式碼是讓位於【Ch04】子目錄的
ASP.NET程式插入函式庫檔案,所以需要
指明路徑為「../」,才能正確的找到函式
庫檔案。
4-8 ASP.NET程式的除錯-說明


在開發ASP.NET程式時,如果單純語法錯
誤,在編譯階段,原始程式錯誤(Source
Error)區塊就會指出錯誤產生的程式碼列
號,和顯示錯誤的程式碼。
如果是在伺服端執行時才發生錯誤,我們
可以開啟除錯模式來顯示進一步的錯誤資
訊,或是使用Trace類別來追蹤錯誤發生的
原因。
4-8 ASP.NET程式的除錯-開啟除錯
模式


當伺服端執行時發生錯誤,我們需要開啟「除錯
模式」(Debug Mode),才能顯示進一步的錯
誤資訊。
請在ASP.NET程式檔案開頭加上Page指引的
Debug屬性,如下所示:
<%@ Page Language="VB" Debug="True" %>

Page指引的Debug屬性True表示開啟除錯模式,
此時在執行ASP.NET,當伺服端產生錯誤,就可
以顯示進一步的除錯資料。
4-8 ASP.NET程式的除錯-追蹤模式
與Trace類別1

請在ASP.NET程式檔案開頭加上Page指引的
Trace屬性,如下所示:
<%@ Page Language="VB" Trace="True" %>
Page指引的Trace屬性True表示開啟追蹤模式。
不只如此,我們還可以使用TraceMode屬性來指
定排序方式,如下所示:
<%@ Page Language="VB" Trace="True"
TraceMode="sortByCategory" %>
 Page指引的TraceMode屬性值是
sortByCategory,表示以分類進行排序。

4-8 ASP.NET程式的除錯-追蹤模式
與Trace類別2

在ASP.NET程式是使用Trace類別的方法來
寫入追蹤訊息,如下所示:
If Trace.IsEnabled Then
Trace.Warn("MyTrace", "Count : " & i)
End If

If條件使用IsEnabled屬性判斷是否開啟追
蹤模式,如果開啟,就使用Warn()方法寫
入紅色的除錯訊息,第1個參數是分類名稱,
第2個參數就是除錯訊息。