This 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. 
Create a Web Form
To create a Web Form:
    
        
            | 1. | 
            In Visual C# .NET, create a new ASP.NET Web Application project named ASPNETFilter. | 
        
        
            | 2. | 
            Right-click the designer pane of WebForm1.aspx. | 
        
        
            | 3. | 
            Click View HTML Source to edit the HTML code. | 
        
        
            | 4. | 
            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>
            
             | 
        
    
Create the ResponseFilter Class
To create the 
ResponseFilter class:
    
        
            | 1. | 
            Add a new class named ResponseFilter.cs. | 
        
        
            | 2. | 
            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: 
            
                
                    
                        | 1. | 
                        Create a folder named C:\FilterOutput. | 
                     
                    
                        | 2. | 
                        Grant read and write access on the folder for the ASPNET user. | 
                     
                
             
             | 
        
    
Use the Response Filter Class
    
        
            | 1. | 
            In Solution Explorer, select WebForm1.aspx.  | 
        
        
            | 2. | 
            Right-click and then select View Code. | 
        
        
            | 3. | 
            Add the following code to theOnInit event code:
            Response.Filter = new ResponseFilter(Response.Filter); 
             | 
        
    
Test the ResponseFilter
    
        
            | 1. | 
            Save the changes to the ASPNETFilter Web project. | 
        
        
            | 2. | 
            On the Build menu, select Build Solution. | 
        
        
            | 3. | 
            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 
             | 
        
        
            | 4. | 
            Find the Response.htm file in the C:\FilterOutput folder. |