当前位置: 首页 > 文档资料 > ASP.NET 中文教程 >

服务器端(Server Side)

优质
小牛编辑
155浏览
2023-12-01

我们研究了页面生命周期以及页面如何包含各种控件。 页面本身被实例化为控制对象。 所有Web表单基本上都是ASP.NET Page类的实例。 页面类具有以下与内部对象对应的非常有用的属性:

  • Session
  • Application
  • Cache
  • Request
  • Response
  • Server
  • User
  • Trace

我们将在适当的时候讨论这些对象。 在本教程中,我们将探索Server对象,Request对象和Response对象。

服务器对象

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集合。
GetLastErrorReturns the previous exception.
GetType获取当前实例的Type。
HtmlEncode将普通字符串更改为具有合法HTML字符的字符串。
HtmlDecode将Html字符串转换为普通字符串。
ToString返回表示当前对象的字符串。
Transfer(String)对于当前请求,终止当前页面的执行,并使用页面的指定URL路径开始执行新页面。
UrlDecode将URL字符串转换为普通字符串。
UrlEncodeToken与UrlEncode一样,但在包含Base64编码数据的字节数组上。
UrlDecodeToken与UrlDecode一样,但在包含Base64编码数据的字节数组上。
MapPath返回与服务器上指定虚拟文件路径对应的物理路径。
Transfer将执行转移到当前应用程序中的另一个网页。

请求对象

请求对象是System.Web.HttpRequest类的实例。 它表示将页面加载到浏览器中的HTTP请求的值和属性。

此对象提供的信息由更高级别的抽象(Web控件模型)包装。 但是,此对象有助于检查某些信息,例如客户端浏览器和cookie。

请求对象的属性和方法

下表提供了Request对象的一些值得注意的属性:

属性描述
AcceptTypes获取客户端支持的MIME接受类型的字符串数组。
ApplicationPath获取ASP.NET应用程序在服务器上的虚拟应用程序根路径。
Browser获取或设置有关请求客户端浏览器功能的信息。
ContentEncoding获取或设置entity-body的字符集。
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。)
GetType获取当前实例的Type。
MapImageCoordinates将传入的图像 - 场形式参数映射到适当的x坐标和y坐标值。
MapPath(String)将指定的虚拟路径映射到物理路径。
SaveAs将HTTP请求保存到磁盘。
ToString返回表示当前对象的字符串。
ValidateInput对通过Cookies,Form和QueryString属性访问的集合进行验证。

响应对象

Response对象表示服务器对客户端请求的响应。 它是System.Web.HttpResponse类的一个实例。

在ASP.NET中,响应对象在向客户端发送HTML文本时不起任何重要作用,因为服务器端控件具有嵌套的,面向对象的方法来呈现自己。

但是,HttpResponse对象仍提供一些重要的功能,如cookie功能和Redirect()方法。 Response.Redirect()方法允许将用户转移到应用程序内部和外部的另一个页面。 它需要往返。

响应对象的属性和方法

下表提供了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兼容。
AppendCookieInfrastructure将HTTP cookie添加到内部cookie集合中。
AppendHeader将HTTP标头添加到输出流。
AppendToLog将自定义日志信息添加到InterNET信息服务(IIS)日志文件。
BinaryWrite将一串二进制字符写入HTTP输出流。
ClearContent清除缓冲区流中的所有内容输出。
Close关闭与客户端的套接字连接。
End将所有当前缓冲的输出发送到客户端,停止执行页面,并引发EndRequest事件。
Equals(Object)确定指定的对象是否等于当前对象。
Flush将所有当前缓冲的输出发送到客户端。
GetType获取当前实例的Type。
Pics将HTTP PICS-Label标头附加到输出流。
Redirect(String)将请求重定向到新URL并指定新URL。
Redirect(String, Boolean)将客户端重定向到新URL。 指定新URL以及是否应终止当前页面的执行。
SetCookie更新cookie集合中的现有cookie。
ToString返回表示当前对象的字符串。
TransmitFile(String)将指定的文件直接写入HTTP响应输出流,而不在内存中缓冲它。
Write(Char)将字符写入HTTP响应输出流。
Write(Object)将对象写入HTTP响应流。
Write(String)将字符串写入HTTP响应输出流。
WriteFile(String)将指定文件的内容作为文件块直接写入HTTP响应输出流。
WriteFile(String, Boolean)将指定文件的内容直接写入HTTP响应输出流作为内存块。

例子 (Example)

以下简单示例具有文本框控件,其中用户可以输入名称,用于将信息发送到服务器的按钮,以及用于显示客户端计算机的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服务器端