ASP.NET - 服务器端

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

  • 会话

  • 申请

  • 缓存

  • 申请

  • 回复

  • 服务器

  • 用户

  • 跟踪

我们将讨论这些对象中的每一个截至日期.在本教程中,我们将探讨Server对象,Request对象和Response对象.

服务器对象

Asp.NET中的Server对象是System.Web.HttpServerUtility类的一个实例. HttpServerUtility类提供了许多属性和方法来执行各种作业.

Server对象的属性和方法

HttpServerUtility类的方法和属性通过ASP.NET提供的内部Server对象公开.

下表提供了属性列表:

属性描述
MachineName服务器计算机的名称
ScriptTimeOut以秒为单位获取并设置请求超时值.

下表提供了一些重要方法的列表:

方法描述
CreateObject(String)创建COM对象的实例t由其ProgID(程序ID)识别.
CreateObject(Type)创建由其类型标识的COM对象的实例.
Equals(Object)确定指定的Object是否等于当前的Object.
Execute(String)在当前请求的上下文中执行指定虚拟路径的处理程序.
Execute(String,Boolean)在当前请求的上下文中执行指定虚拟路径的处理程序,并指定是否清除QueryString和Form集合.
GetLastError返回上一个异常.
GetType获取当前实例的类型.
HtmlEncode将普通字符串更改为带腿的字符串HTML字符.
HtmlDecode将Html字符串转换为普通字符串.
ToString返回表示当前Object的String.
Transfer(String)对于当前请求,终止当前页面的执行并使用页面的指定URL路径开始执行新页面.
UrlDecode将URL字符串转换为普通字符串.
UrlEncodeToken与UrlEncode相同,但在包含Base64编码数据的字节数组上.
UrlDecodeToken与UrlDecode相同,但在包含Base64编码数据的字节数组上.
MapPath返回与服务器上指定虚拟文件路径对应的物理路径.
Transfer将执行转移到当前应用程序中的另一个网页.

请求对象

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

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

请求对象的属性和方法

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

Property描述
AcceptTypes获取客户端支持的MIME接受类型的字符串数组.
ApplicationPath获取ASP.NET应用程序在服务器上的虚拟应用程序根路径.
Browser获取或设置有关请求客户端浏览器功能的信息.
ContentEncoding获取或设置entity-body的字符集.
ContentLength指定cli发送的内容的长度(以字节为单位) ent.
ContentType获取或设置传入的MIME内容类型请求.
Cookies获取客户端发送的cookie集合.
FilePath获取当前请求的虚拟路径.
Files以多部分MIME格式获取客户端上传的文件集合.
Form获取表格变量的集合.
Headers获取HTTP标头的集合.
HttpMethod获取客户端使用的HTTP数据传输方法(如GET,POST或HEAD)./td>
InputStream获取传入HTTP实体主体的内容.
IsSecureConnection获取值指示g 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获取当前的类型实例.
MapImageCoordinates将传入的图像字段表单参数映射到适当的x坐标和y坐标值.
MapPath(String)将指定的虚拟路径映射到物理路径.
SaveAs保存对磁盘的HTTP请求.
ToString返回表示当前的字符串object.
ValidateInput导致通过Cookie,Form和QueryString属性.

响应对象

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

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

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

响应对象的属性和方法

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

属性描述
Buffer获取或设置一个值,指示是否缓冲输出并在之后发送完整的响应处理完毕.
BufferOutput获取或设置一个值指示是否缓冲输出并在完成整个页面处理后发送它.
Charset获取或设置输出流的HTTP字符集.
ContentEncoding获取或设置输出流的HTTP字符集.
ContentType获取或设置输出的HTTP MIME类型tream.
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添加自定义日志信息到互联网信息服务(IIS)日志文件.
BinaryWrite写一个字符串的二进制字符到HTTP输出流.
ClearContent全部清除从缓冲区流输出的内容.
Close关闭套接字连接客户.
End将所有当前缓冲的输出发送到客户端,停止执行页面,并引发EndRequest事件.
Equals(Object)确定指定的对象是否等于当前对象.
Flush将所有当前缓冲的输出发送到客户端.
GetType获取当前实例的类型.
Pics将HTTP PICS-Label标头附加到输出流.
Redirect(String)将请求重定向到新URL并指定新URL.
Redirect(String,Boolean)将客户端重定向到新的URL.指定新URL以及当前页面的执行是否应该终止.
SetCookie更新cookie集合中的现有cookie.
ToString返回表示当前Object的String.
TransmitFile(String)写入指定的文件直接到HTTP响应输出流,而不在内存中缓冲.
写(字符)将字符写入HTTP响应输出流.
写入(对象)将对象写入HTTP响应流.
Write(String)将字符串写入HTTP响应输出流.
WriteFile(String)将指定文件的内容作为文件块直接写入HTTP响应输出流.
WriteFile(String,Boolean)将指定文件的内容直接写入HTTP响应输出流作为内存块./td>

示例

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