Id. de artículo: 810205 - Última revisión: miércoles, 21 de mayo de 2003 - Versión: 3.5

Cómo: Almacenar los resultados de una página dinámica para una página HTML en ASP.NET mediante Visual C# .NET

Nota acerca de su sistema operativoEste artículo se aplica a un sistema operativo distinto al que usa. El contenido del artículo que puede que no sea importante para usted, se deshabilitará
Para obtener una versión de Microsoft Visual Basic .NET de este artículo, consulte 811162  (http://support.microsoft.com/kb/811162/EN-US/ ) .

En esta página

Expandir todo | Contraer todo
En esta tarea

    Resumen

    Este artículo paso a paso describe cómo recuperar el código HTML resultados de una página como una secuencia y, a continuación, descarga la secuencia de un archivo. Cuando se utiliza el objeto FileStream y establezca la propiedad Response.Filter en el objeto FileStream , HTTP todos los resultados que Response.Write envía también descargas como secuencia a un archivo.

    Crear un formulario Web

    Para crear un formulario Web:
    1. En Visual C#. NET, cree una nueva aplicación Web de ASP.NET denominado ASPNETFilter de proyecto.
    2. El diseñador secundario de WebForm1.aspx.
    3. Haga clic en Ver origen de HTML para modificar el código HTML código.
    4. Reemplace el código existente con el código siguiente:
      <%@ 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>
      

    Crear la clase ResponseFilter

    Para crear la clase ResponseFilter :
    1. Agregue una clase nueva denominada ResponseFilter.cs.
    2. Reemplace el código existente con el código siguiente:
      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);	
      		}
      	}
      }
      Nota antes de ejecutar la aplicación Web:
      1. Cree una carpeta denominada C:\FilterOutput.
      2. Conceder acceso de escritura en la carpeta para el usuario ASPNET y de lectura.

    Utilice la clase de filtro de respuesta

    1. En el Explorador de soluciones, seleccione WebForm1.aspx .
    2. Haga clic con el botón secundario del mouse y seleccione Ver código.
    3. Agregue el código siguiente al código de evento OnInit :
      Response.Filter = new ResponseFilter(Response.Filter);

    Probar la ResponseFilter

    1. Guardar los cambios en el ASPNETFilter Web del proyecto.
    2. En el menú Generar , seleccione Generar solución .
    3. Inicie Microsoft Internet Explorer y, a continuación, abra WebForm1.aspx especificando la dirección URL siguiente, donde IISServerName es el nombre del servidor de servicios de Internet Information Server (IIS):
      http://IISServerName/ASPNETFilter/WebForm1.aspx
    4. Encontrar el archivo Response.htm en C:\FilterOutput la carpeta.

    Referencias

    Para obtener más información, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
    Propiedad HttpResponse.Filter

    La información de este artículo se refiere a:
    • Microsoft ASP.NET 1.1
    • Microsoft ASP.NET 1.0
    • Microsoft Visual C# .NET 2003 Standard Edition
    • Microsoft Visual C# .NET 2002 Standard Edition
    Palabras clave: 
    kbmt kbwebforms kbfileio kbhowto KB810205 KbMtes
    Traducción automáticaTraducción automática
    IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
    Haga clic aquí para ver el artículo original (en inglés): 810205  (http://support.microsoft.com/kb/810205/en-us/ )