ASP.NET页面对象 – Response

获取与该 Page 对象关联的 HttpResponse 对象。该对象使您得以将 HTTP 响应数据发送到客户端,并包含有关该响应的信息。 html

1、HttpResponse 类 web

封装来自 ASP.NET 操做的 HTTP 响应信息。 数据库

HttpResponse 类型公开如下成员。 数组

 构造函数 浏览器

 

名称 缓存

说明 服务器

HttpResponse cookie

基础结构。初始化 HttpResponse 类的新实例。 session

 

 方法 app

名称

说明

AddCacheDependency

将一组缓存依赖项与响应关联,这样,若是响应存储在输出缓存中而且指定的依赖项发生变化,就可使该响应失效。

AddCacheItemDependencies

已重载。 使缓存响应的有效性依赖于缓存中的其余项。

AddCacheItemDependency

使缓存响应的有效性依赖于缓存中的其余项。

AddFileDependencies

已重载。 使缓存响应的有效性依赖于缓存中的其余项。

AddFileDependency

将单个文件名添加到文件名集合中,当前响应依赖于该集合。

AddHeader

将一个 HTTP 标头添加到输出流。提供 AddHeader 是为了与 ASP 的先前版本保持兼容。

AppendCookie

基础结构。将一个 HTTP Cookie 添加到内部 Cookie 集合。

AppendHeader

将 HTTP 头添加到输出流。

AppendToLog

将自定义日志信息添加到 Internet 信息服务 (IIS) 日志文件。

ApplyAppPathModifier

若是会话使用 Cookieless 会话状态,则将该会话 ID 添加到虚拟路径中,并返回组合路径。若是不使用 Cookieless 会话状态,则 ApplyAppPathModifier 返回原始的虚拟路径。

BinaryWrite

将一个二进制字符串写入 HTTP 输出流。

Clear

清除缓冲区流中的全部内容输出。

ClearContent

清除缓冲区流中的全部内容输出。

ClearHeaders

清除缓冲区流中的全部头。

Close

关闭到客户端的套接字链接。

DisableKernelCache

禁用当前响应的内核缓存。

End

将当前全部缓冲的输出发送到客户端,中止该页的执行,并引起 EndRequest 事件。

Equals

肯定指定的 Object 是否等于当前的 Object。 (继承自 Object。)

Finalize

容许 Object 在“垃圾回收”回收 Object 以前尝试释放资源并执行其余清理操做。 (继承自 Object。)

Flush

向客户端发送当前全部缓冲的输出。

GetHashCode

用做特定类型的哈希函数。 (继承自 Object。)

GetType

获取当前实例的 Type。 (继承自 Object。)

MemberwiseClone

建立当前 Object 的浅表副本。 (继承自 Object。)

Pics

将一个 HTTP PICS-Label 标头追加到输出流。

Redirect

已重载。 将客户端重定向到新的 URL。

RemoveOutputCacheItem

从缓存中移除与指定路径关联的全部缓存项。此方法是静态的。

SetCookie

基础结构。更新 Cookie 集合中的一个现有 Cookie。

ToString

返回表示当前 Object 的 String。 (继承自 Object。)

TransmitFile

已重载。 将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件。

Write

已重载。 将信息写入 HTTP 响应输出流。

WriteFile

已重载。 将指定的文件直接写入 HTTP 响应输出流。

WriteSubstitution

容许将响应替换块插入响应,从而容许为缓存的输出响应动态生成指定的响应区域。

 

 属性

 

名称

说明

Buffer

获取或设置一个值,该值指示是否缓冲输出并在处理完整个响应以后发送它。

BufferOutput

获取或设置一个值,该值指示是否缓冲输出并在处理完整个页以后发送它。

Cache

获取网页的缓存策略(例如:过时时间、保密性设置和变化条款)。

CacheControl

获取或设置与 HttpCacheability 枚举值之一匹配的 Cache-Control HTTP 标头。

Charset

获取或设置输出流的 HTTP 字符集。

ContentEncoding

获取或设置输出流的 HTTP 字符集。

ContentType

获取或设置输出流的 HTTP MIME 类型。

Cookies

获取响应 Cookie 集合。

Expires

获取或设置在浏览器上缓存的页过时以前的分钟数。若是用户在页面过时以前返回同一页,则显示缓存的版本。提供 Expires 是为了与 ASP 的先前版本保持兼容。

ExpiresAbsolute

获取或设置从缓存中移除缓存信息的绝对日期和时间。提供 ExpiresAbsolute 是为了与ASP 的先前版本保持兼容。

Filter

获取或设置一个包装筛选器对象,该对象用于在传输以前修改 HTTP 实体主体。

HeaderEncoding

获取或设置一个 Encoding 对象,该对象表示当前标头输出流的编码。

Headers

获取响应标头的集合。

IsClientConnected

获取一个值,经过该值指示客户端是否仍链接在服务器上。

IsRequestBeingRedirected

获取一个布尔值,该值指示客户端是否正在被传输到新的位置。

Output

启用到输出 HTTP 响应流的文本输出。

OutputStream

启用到输出 HTTP 内容主体的二进制输出。

RedirectLocation

获取或设置 Http Location 标头的值。

Status

设置返回到客户端的 Status 栏。

StatusCode

获取或设置返回给客户端的输出的 HTTP 状态代码。

StatusDescription

获取或设置返回给客户端的输出的 HTTP 状态字符串。

SubStatusCode

获取或设置一个限定响应的状态代码的值。

SuppressContent

获取或设置一个值,该值指示是否将 HTTP 内容发送到客户端。

TrySkipIisCustomErrors

获取或设置一个值,该值指定是否禁用 IIS 7.0 自定义错误。

 

 

 

2、 Response对象的经常使用成员说明

 

Response用于回应浏览器,告诉浏览器回应内容的报头、服务器的状态信息和输出指定的内容。

(1)  Response.ContentType = "text/html"

 设定输出内容的类型。

 字符串格式为type/subtype,type表示内容的分类,subtype则表示特定内容类型,再如"image/gif"

(2)  Response.Clear()方法 

删除全部缓存中的HTML输出。但此方法只删除Response显示输出信息,不删除response头信息。

(3)  Response.ClearContent()方法

 不只像Clear()方法那样删除Response显示输出信息,并且还删除Response头信息。

(4)  Response.ClearHeader()方法

 仅删除Response头信息

(5)  Response.Expires=number

 设定页面在浏览器Cache中失效的时间长度(单位为分钟),若是用户在其失效以前返回到同一个画面,则显示Cache中的页面。

(6)  Response.ExpiresAbsolute=DateTime

 设定页面在浏览器Cache中失效的具体时间。例:Response.ExpiresAbsolute=DateTime.Now,表示立刻过时。

(7)  Response.Buffer=bool

 设定页面是否进行缓冲。默认是True。

 若有缓冲,则服务器在当前处理的页面上的语句被处理以前,不将Response语句发送给客户端,除非有Flush()或End()方法调用。

(8)  Response.Flush()方法

 当即将缓区中的页面输出。

(9)  Response.End()方法

 使Web服务器中止当前的程序并返回结果,剩下的文件内容是没有处理的。

(10)  Response.Write()方法

 输出指定的文本内容。例:Response.Write("Hello!")

(11)  Response.BinaryWrite()方法

 将指定的信息不进行字符转换,直接写到当前的HTTP输出。此方法可用来自来非字符数据,如某些应用程序要求的二进制数据。

(12)  Response.WriteFile()方法

 直接将输出内容写入一个文件。例:Response.WriteFile("D://abc.txt")

 注:写入的文件在写入以前必须存在。

 

3、用Response对象输出图像

一、、简介

做为ASP.NET基本对象之一的Response对象不但能够经过Write()方法直接在页面上输出字符串数据,并且还可使用BinaryWrite()方法直接显示二进制表示的数据,如图像、图片等。

本文示例小工程将向你展现如何使用Response对象在ASP.NET 2.0 Web页面中输出直接存储在SQL Server 2005数据库中的图像数据。
【注意】在本例中,咱们没有讨论仅在SQL Server 2005表格中存储图像的URL的情形。由于这种情形是实际开发中被广为采用的方法,因此,读者不难在Web上搜到相应的使用案例。

首先,让咱们来分析一个简单的直接在Web页面上绘制并输出图像数据的例子。

二、直接在Web页面上绘制并输出图像数据 
下面的代码示例在请求页面时将绘制三个部分重叠的矩形。该代码首先将ContentType属性设置为image/jpeg,以便将整个页面呈现为一幅JPEG图像。第二步,该代码调用Clear方法以确保不会将无关的内容(包括标头)与此响应一同发送。第三步,该代码将BufferOutput属性设置为true,从而使该页面在彻底处理以后再发送到发出请求的客户端。第四步,建立两个用于绘制矩形的对象,即Bitmap和Graphics对象。在该页中建立的变量将做为绘制矩形的坐标和在最大的矩形中显示的字符串。

在绘制三个矩形和其中显示的字符串时,将Bitmap保存到与OutputStream属性相关联的Stream对象中,并将其格式设置为JPEG。接下来,该代码调用Dispose和Dispose方法来释放资源—这些资源为两个绘制对象所使用。最后,该代码调用Flush方法将缓冲的响应发送到请求客户端。

完整的实现代码以下所示:

<%@ Page Language="C#" %>

<%@ import Namespace="System.Drawing" %>

<%@ import Namespace="System.Drawing.Imaging" %>

<%@ import Namespace="System.Drawing.Drawing2D" %>

<script runat="server">

private void Page_Load(object sender, EventArgs e)

{

//设置页面的content type为JPEG文件

//而且清除全部的响应头部信息

Response.ContentType = "image/jpeg";

Response.Clear();

//对响应做出缓冲以便处理完成后发送页面

Response.BufferOutput = true;

//建立一字体风格

Font rectangleFont = new Font(

"Arial", 10, FontStyle.Bold);

//建立整数变量

int height = 100;

int width = 200;

//建立一个随机数字生成器而且基于它建立

//变量值

Random r = new Random();

int x = r.Next(75);

int a = r.Next(155);

int x1 = r.Next(100);

//建立一张位图而且使用它建立一个

//Graphics对象

Bitmap bmp = new Bitmap(

width, height, PixelFormat.Format24bppRgb);

Graphics g = Graphics.FromImage(bmp);

g.SmoothingMode = SmoothingMode.AntiAlias;

g.Clear(Color.LightGray);

//使用这个Graphics对象绘制3个矩形

g.DrawRectangle(Pens.White, 1, 1, width-3, height-3);

g.DrawRectangle(Pens.Aquamarine, 2, 2, width-3, height-3);

g.DrawRectangle(Pens.Black, 0, 0, width, height);

//使用这个Graphics对象输出一个字符串

// on the rectangles.

g.DrawString(

"ASP.NET Samples", rectangleFont,

SystemBrushes.WindowText, new PointF(10, 40));

//在其中两个矩形上添加颜色

g.FillRectangle(

new SolidBrush(

Color.FromArgb(a, 255, 128, 255)),

x, 20, 100, 50);

g.FillRectangle(

new LinearGradientBrush(

new Point(x, 10),

new Point(x1 + 75, 50 + 30),

Color.FromArgb(128, 0, 0, 128),

Color.FromArgb(255, 255, 255, 240)),

x1, 50, 75, 30);

//把位图保存到响应流中而且把它转换成JPEG格式

bmp.Save(Response.OutputStream, ImageFormat.Jpeg);

//释放掉Graphics对象和位图所使用的内存空间

g.Dispose();

bmp.Dispose();

//把输出结果发送到客户端

Response.Flush();

}

</script>

<html>

<head>

</head>

<body>

<form runat="server">

</form>

</body>

</html>

接下来,让咱们讨论本文重点—如何在ASP页面中输出直接存储在数据库中的图像数据。

3、事件设计 
示例工程中的DispImage.aspx页面在其初始化函数Page_Load(object sender,EventArgs e)中使用Response对象输出一幅图像—该图像存储在SQL Server 2005 Express Edition数据库中,并用二进制表示。

在代码中,咱们首先从数据库PictureDB的表格PictureTab中获取一个ID值为1的图片,而后使用byte数组Data保存图片的数据。而后,咱们能够基于以下步骤来输出相应的图像:
1. 设置Response对象的输出类型; 
2. 输出图像的文件头; 
3. 输出图像的二进制数据; 
4. 结束输出。若是图片太大,还可使用输出缓冲的方法。

函数Page_Load(object sender,EventArgs e)的程序代码以下:

 
 protectedvoid Page_Load(object sender,EventArgs e)
{ ///建立连接
 SqlConnection myConnection = new SqlConnection(
ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].ConnectionString);
///定义SQL语句
 string cmdText = "SELECT * FROM PictureTab WHERE PictureID='1'";
///建立Command
 SqlCommand myCommand = new SqlCommand(cmdText,myConnection);
///定义DataReader
SqlDataReader dr = null;
try
{ ///打开连接
myConnection.Open();
///读取数据
dr = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
catch(SqlException ex)
{ ///抛出异常
thrownew Exception(ex.Message,ex);
}
///定义保存数据的字节数组
byte[] Data = null;
while(dr.Read())
{ ///读取数据
Data = (byte[])dr["Data"];
Response.ContentType = dr["Type"].ToString();
}
dr.Close();
//显示图片数据
this.EnableViewState = false;
///输出文件头
Response.AppendHeader("Content-Length",Data.Length.ToString());
///输出文件的数据
Response.BinaryWrite(Data);
///结束输出
Response.End();
}
相关文章
相关标签/搜索