ASP.NET - 伺服器端



我們已經學習了頁面生命週期以及頁面如何包含各種控制元件。頁面本身作為控制元件物件例項化。所有 Web 窗體基本上都是 ASP.NET Page 類的例項。Page 類具有以下極其有用的屬性,這些屬性對應於內在物件

  • 會話 (Session)
  • 應用程式 (Application)
  • 快取 (Cache)
  • 請求 (Request)
  • 響應 (Response)
  • 伺服器 (Server)
  • 使用者 (User)
  • 跟蹤 (Trace)

我們將適時討論這些物件中的每一個。在本教程中,我們將探討 Server 物件、Request 物件和 Response 物件。

Server 物件

Asp.NET 中的 Server 物件是 System.Web.HttpServerUtility 類的例項。HttpServerUtility 類提供許多屬性和方法來執行各種任務。

Server 物件的屬性和方法

HttpServerUtility 類的屬性和方法透過 ASP.NET 提供的內在 Server 物件公開。

下表列出了這些屬性

屬性 描述
MachineName 伺服器計算機的名稱
ScriptTimeOut 獲取和設定請求超時值(以秒為單位)。

下表列出了一些重要的方法

方法 描述
CreateObject(String) 建立由其 ProgID(程式化 ID)標識的 COM 物件的例項。
CreateObject(Type) 建立由其 Type 標識的 COM 物件的例項。
Equals(Object) 確定指定的 Object 是否等於當前 Object。
Execute(String) 在當前請求的上下文中執行指定虛擬路徑的處理程式。
Execute(String, Boolean) 在當前請求的上下文中執行指定虛擬路徑的處理程式,並指定是否清除 QueryString 和 Form 集合。
GetLastError 返回之前的異常。
GetType 獲取當前例項的 Type。
HtmlEncode 將普通字串更改為具有合法 HTML 字元的字串。
HtmlDecode 將 HTML 字串轉換為普通字串。
ToString 返回表示當前 Object 的 String。
Transfer(String) 對於當前請求,終止當前頁面的執行,並使用頁面的指定 URL 路徑開始新頁面的執行。
UrlDecode 將 URL 字串轉換為普通字串。
UrlEncodeToken 與 UrlEncode 的作用相同,但在包含 Base64 編碼資料的位元組陣列上操作。
UrlDecodeToken 與 UrlDecode 的作用相同,但在包含 Base64 編碼資料的位元組陣列上操作。
MapPath 返回對應於伺服器上指定的虛擬檔案路徑的物理路徑。
Transfer 將執行轉移到當前應用程式中的另一個網頁。

Request 物件

Request 物件是 System.Web.HttpRequest 類的例項。它表示使頁面載入到瀏覽器中的 HTTP 請求的值和屬性。

此物件提供的資訊由更高級別的抽象(Web 控制元件模型)包裝。但是,此物件有助於檢查某些資訊,例如客戶端瀏覽器和 Cookie。

Request 物件的屬性和方法

下表列出了一些值得注意的 Request 物件屬性

屬性 描述
AcceptTypes 獲取客戶端支援的 MIME 接受型別的字串陣列。
ApplicationPath 獲取伺服器上 ASP.NET 應用程式的虛擬應用程式根路徑。
Browser 獲取或設定有關請求客戶端瀏覽器功能的資訊。
ContentEncoding 獲取或設定實體主體的字元集。
ContentLength 指定客戶端傳送的內容長度(以位元組為單位)。
ContentType 獲取或設定傳入請求的 MIME 內容型別。
Cookies 獲取客戶端傳送的 Cookie 集合。
FilePath 獲取當前請求的虛擬路徑。
Files 獲取客戶端以多部分 MIME 格式上傳的檔案集合。
Form 獲取窗體變數集合。
Headers 獲取 HTTP 標頭集合。
HttpMethod 獲取客戶端使用的 HTTP 資料傳輸方法(例如 GET、POST 或 HEAD)。
InputStream 獲取傳入 HTTP 實體主體的內容。
IsSecureConnection 獲取一個值,該值指示 HTTP 連線是否使用安全套接字(即 HTTPS)。
QueryString 獲取 HTTP 查詢字串變數的集合。
RawUrl 獲取當前請求的原始 URL。
RequestType 獲取或設定客戶端使用的 HTTP 資料傳輸方法(GET 或 POST)。
ServerVariables 獲取 Web 伺服器變數的集合。
TotalBytes 獲取當前輸入流中的位元組數。
Url 獲取有關當前請求的 URL 的資訊。
UrlReferrer 獲取有關連結到當前 URL 的客戶端先前請求的 URL 的資訊。
UserAgent 獲取客戶端瀏覽器的原始使用者代理字串。
UserHostAddress 獲取遠端客戶端的 IP 主機地址。
UserHostName 獲取遠端客戶端的 DNS 名稱。
UserLanguages 獲取客戶端語言首選項的已排序字串陣列。

下表列出了一些重要的方法

方法 描述
BinaryRead 從當前輸入流執行指定數量位元組的二進位制讀取。
Equals(Object) 確定指定的 Object 是否等於當前 Object。(繼承自 object。)
GetType 獲取當前例項的 Type。
MapImageCoordinates 將傳入的影像欄位窗體引數對映到適當的 x 座標和 y 座標值。
MapPath(String) 將指定的虛擬路徑對映到物理路徑。
SaveAs 將 HTTP 請求儲存到磁碟。
ToString 返回表示當前物件的字串。
ValidateInput 導致對透過 Cookies、Form 和 QueryString 屬性訪問的集合進行驗證。

Response 物件

Response 物件表示伺服器對客戶端請求的響應。它是 System.Web.HttpResponse 類的例項。

在 ASP.NET 中,Response 物件在將 HTML 文字傳送到客戶端方面沒有發揮任何重要作用,因為伺服器端控制元件具有巢狀的、面向物件的自身呈現方法。

但是,HttpResponse 物件仍然提供一些重要的功能,例如 Cookie 功能和 Redirect() 方法。Response.Redirect() 方法允許將使用者轉移到另一個頁面,在應用程式內部和外部。它需要往返。

Response 物件的屬性和方法

下表列出了一些值得注意的 Response 物件屬性

屬性描述
Buffer 獲取或設定一個值,該值指示是否緩衝輸出並在完成響應處理後傳送輸出。
BufferOutput 獲取或設定一個值,該值指示是否緩衝輸出並在完成頁面處理後傳送輸出。
Charset 獲取或設定輸出流的 HTTP 字元集。
ContentEncoding 獲取或設定輸出流的 HTTP 字元集。
ContentType 獲取或設定輸出流的 HTTP MIME 型別。
Cookies 獲取響應 Cookie 集合。
Expires 獲取或設定瀏覽器上快取的頁面過期之前的分鐘數。
ExpiresAbsolute 獲取或設定從快取中刪除快取資訊的絕對日期和時間。
HeaderEncoding 獲取或設定表示當前標頭輸出流編碼的編碼物件。
Headers 獲取響應標頭的集合。
IsClientConnected 獲取一個值,該值指示客戶端是否仍然連線到伺服器。
Output 啟用將文字輸出到傳出的 HTTP 響應流。
OutputStream 啟用對傳出的 HTTP 內容主體的二進位制輸出。
RedirectLocation 獲取或設定 Http Location 標頭的值。
Status 設定返回給客戶端的狀態行。
StatusCode 獲取或設定返回給客戶端的輸出的 HTTP 狀態程式碼。
StatusDescription 獲取或設定返回給客戶端的輸出的 HTTP 狀態字串。
SubStatusCode 獲取或設定限定響應狀態程式碼的值。
SuppressContent 獲取或設定一個值,該值指示是否將 HTTP 內容傳送到客戶端。

下表列出了一些重要的方法

方法 描述
AddHeader 將 HTTP 標頭新增到輸出流。AddHeader 用於與早期版本的 ASP 保持相容性。
AppendCookie 基礎結構將 HTTP Cookie 新增到內在 Cookie 集合。
AppendHeader 將 HTTP 標頭新增到輸出流。
AppendToLog 將自定義日誌資訊新增到 InterNET Information Services (IIS) 日誌檔案。
BinaryWrite 將二進位制字元字串寫入 HTTP 輸出流。
ClearContent 清除緩衝流中的所有內容輸出。
Close 關閉與客戶端的套接字連線。
End 將所有當前緩衝的輸出傳送到客戶端,停止頁面的執行,並引發 EndRequest 事件。
Equals(Object) 確定指定的 Object 是否等於當前 Object。
Flush 將所有當前緩衝的輸出傳送到客戶端。
GetType 獲取當前例項的 Type。
Pics 將 HTTP PICS-Label 標頭附加到輸出流。
Redirect(String) 將請求重定向到新的 URL 並指定新的 URL。
Redirect(String, Boolean) 將客戶端重定向到新的URL。指定新的URL以及是否應終止當前頁面的執行。
SetCookie 更新cookie集合中已存在的cookie。
ToString 返回表示當前 Object 的 String。
TransmitFile(String) 將指定的檔案直接寫入HTTP響應輸出流,而無需將其緩衝在記憶體中。
Write(Char) 將字元寫入HTTP響應輸出流。
Write(Object) 將物件寫入HTTP響應流。
Write(String) 將字串寫入HTTP響應輸出流。
WriteFile(String) 將指定檔案的內容作為檔案塊直接寫入HTTP響應輸出流。
WriteFile(String, Boolean) 將指定檔案的內容作為記憶體塊直接寫入HTTP響應輸出流。

示例

以下簡單示例包含一個文字框控制元件,使用者可以在其中輸入姓名;一個按鈕,用於將資訊傳送到伺服器;以及一個標籤控制元件,用於顯示客戶端計算機的URL。

內容檔案

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
   Inherits="server_side._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

   <head runat="server">
      <title>Untitled Page</title>
   </head>
   
   <body>
      <form id="form1" runat="server">
         <div>
            
            Enter your name:
            <br />
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Submit" />
            <br />
            <asp:Label ID="Label1" runat="server"/>

         </div>
      </form>
   </body>
   
</html>

Button1_Click 後面的程式碼

protected void Button1_Click(object sender, EventArgs e) {

   if (!String.IsNullOrEmpty(TextBox1.Text)) {
   
      // Access the HttpServerUtility methods through
      // the intrinsic Server object.
      Label1.Text = "Welcome, " + Server.HtmlEncode(TextBox1.Text) + ". <br/> The url is " + Server.UrlEncode(Request.Url.ToString())
   }
}

執行頁面以檢視以下結果

ASP.NET Server Side
廣告
© . All rights reserved.