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
广告