HOW TO: Archive the Results of a Dynamic Page to an HTML Page in ASP.NET by Using Visual C# .NET (810205)
The information in this article applies to:
- Microsoft ASP.NET (included with the .NET Framework 1.1)
- Microsoft ASP.NET (included with the .NET Framework) 1.0
- Microsoft Visual C# .NET (2003)
- Microsoft Visual C# .NET (2002)
For a Microsoft Visual Basic .NET version of this
article, see
811162. SUMMARYThis step-by-step article describes how to retrieve the HTML
results of a page as a stream and then download the stream to a file. When you
use the FileStream object and set the Response.Filter property to the FileStream object, all HTTP output that Response.Write sends also downloads as stream to a file. back to the topCreate a Web FormTo create a Web Form:
- In Visual C# .NET, create a new ASP.NET Web Application
project named ASPNETFilter.
- Right-click the designer pane of WebForm1.aspx.
- Click View HTML Source to edit the HTML
code.
- Replace the existing code with the following code :
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="ASPNETFilter.WebForm1" %>
<HTML>
<HEAD>
<title>SaveResponse</title>
</HEAD>
<body>
<form id="SaveResponse" method="post" runat="server">
<asp:TextBox ID="TextBox1" Text="Textbox 1" Runat="server" /><br>
<asp:ListBox ID="Listbox1" Runat="server" Size="3">
<asp:ListItem Value="0">Zero</asp:ListItem>
<asp:ListItem Value="1" Selected="True">One</asp:ListItem>
<asp:ListItem Value="2">Two</asp:ListItem>
</asp:ListBox><br>
<asp:CheckBox ID="Checkbox1" Runat="server" Checked="True" Text="Checkbox 1" />
</form>
</body>
</HTML>
back
to the topCreate the ResponseFilter ClassTo create the ResponseFilter class:
- Add a new class named ResponseFilter.cs.
- Replace the existing code with the following code:
using System;
using System.IO;
namespace ASPNETFilter
{
public class ResponseFilter : Stream
{
private Stream m_sink;
private long m_position;
private FileStream fs;
public ResponseFilter(Stream sink)
{
m_sink = sink;
fs = new FileStream(@"C:\FilterOutput\response.htm", FileMode.OpenOrCreate, FileAccess.Write);
}
// The following members of Stream must be overriden.
public override bool CanRead
{get { return true; }}
public override bool CanSeek
{get { return false; }}
public override bool CanWrite
{get { return false; }}
public override long Length
{get { return 0; }}
public override long Position
{
get { return m_position; }
set { m_position = value; }
}
public override long Seek(long offset, System.IO.SeekOrigin direction)
{
return 0;
}
public override void SetLength(long length)
{
m_sink.SetLength(length);
}
public override void Close()
{
m_sink.Close();
fs.Close();
}
public override void Flush()
{
m_sink.Flush();
}
public override int Read(byte[] buffer, int offset, int count)
{
return m_sink.Read(buffer, offset, count);
}
// Override the Write method to filter Response to a file.
public override void Write(byte[] buffer, int offset, int count)
{
//Write out the response to the browser.
m_sink.Write(buffer, 0, count);
//Write out the response to the file.
fs.Write(buffer, 0, count);
}
}
} Note Before you run the Web application:
- Create a folder named C:\FilterOutput.
- Grant read and write access on the folder for the
ASPNET user.
back
to the topUse the Response Filter Class- In Solution Explorer, select
WebForm1.aspx.
- Right-click and then select View Code.
- Add the following code to theOnInit event code:
Response.Filter = new ResponseFilter(Response.Filter); back
to the topTest the ResponseFilter- Save the changes to the ASPNETFilter Web
project.
- On the Build menu, select Build Solution.
- Start Microsoft Internet Explorer, and then open
WebForm1.aspx by specifying the following URL, where
IISServerName is the name of your Microsoft Internet
Information Services (IIS) server:
http://IISServerName/ASPNETFilter/WebForm1.aspx - Find the Response.htm file in the C:\FilterOutput
folder.
back to the topREFERENCESFor more information, visit the following Microsoft
Developer Network (MSDN) Web site: back
to the top
Modification Type: | Major | Last Reviewed: | 5/21/2003 |
---|
Keywords: | kbWebForms kbFileIO kbhowto KB810205 kbAudDeveloper kbAudITPRO |
---|
|