ASP.NET Response Header 使用指南:下载与重定向

需积分: 50 7 下载量 4 浏览量 更新于2024-09-13 收藏 2KB TXT 举报
本文将详细介绍如何使用ASP.NET中的`Response.AppendHeader`方法来实现各种功能,特别是与下载文件相关的操作。`Response.AppendHeader`是ASP.NET中用于向HTTP响应头添加自定义字段的方法,这对于控制客户端浏览器的行为至关重要。 1. 下载文件 在ASP.NET中,我们可以利用`Response`对象来实现文件下载功能。例如,要下载一个名为“所需文件.rar”的RAR文件,可以使用以下代码: ```c# Response.AddHeader("content-type", "application/x-msdownload"); Response.AddHeader("Content-Disposition", "attachment;filename=所需文件.rar"); Response.BinaryWrite(fileBytes); // fileBytes为文件的二进制数据 Response.End(); ``` 这里的`content-type`指定文件类型,`application/x-msdownload`适用于Windows下的可执行文件或RAR压缩包。`Content-Disposition`设置为`attachment`表示下载附件,`filename`参数指定了下载后的文件名。 2. 页面重定向 除了下载文件,`Response.AppendHeader`还可以用于页面重定向。例如,要在60秒后自动跳转到新的页面,可以使用: ```c# Response.AddHeader("REFRESH", "60;URL=newpath/newpage.asp"); ``` 这与HTML中的`<META HTTP-EQUIV="REFRESH" content="60;URL=newpath/newpage.asp">`具有相同的效果。 3. HTTP状态码设置 `Response.Status`可以用来设置HTTP状态码,如: - 302 Object Moved:表示临时重定向,可以通过`Response.AddHeader("Location", "newpath/newpage.asp")`配合使用。 - 401 Unauthorized:表示未经授权,可以添加`WWW-Authenticate`头来要求用户提供身份验证。 4. 缓存控制 `Response.AppendHeader`还可以用于控制页面缓存,例如: - 防止页面缓存:`Response.Expires = -1`,`Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1)`,`Response.AddHeader("pragma", "no-cache")`,`Response.AddHeader("cache-control", "private")`。 - 禁止缓存:`Response.CacheControl = "no-cache"`。 5. 个性化文件下载 在ASP.NET中,如果需要提供自定义大小和路径的文件下载,可以这样做: ```c# string fileName; // 文件名 string dir; // 文件存储路径 (例如:c:\aa\ddd\wj0000222.zdo) long size; // 文件大小 Response.AddHeader("content-type", "application/x-msdownload;"); Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); Response.AddHeader("content-length", size.ToString()); Response.WriteFile(dir, 0, size); ``` 这段代码将指定的文件以指定的文件名下载,并告知客户端文件的大小,从而允许浏览器正确显示下载进度。 `Response.AppendHeader`在ASP.NET中是一个非常强大的工具,可用于控制HTTP响应头,实现诸如下载文件、页面重定向、设置HTTP状态码、控制缓存等重要功能。开发者可以根据具体需求灵活运用,提升网站的功能性和用户体验。