Cómo: Enviar y recibir documentos binarios mediante un servicio Web ASP.NET y C# .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 318425 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo paso a paso se muestra cómo crear un servicio Web y un cliente de servicios Web para enviar y recibir documentos binarios mediante Microsoft ASP.NET y Microsoft Visual C# .NET. Puede utilizar ASP.NET y Visual C# .NET para crear un servicio Web que guarda documentos binarios en una carpeta en un servidor Web y recupera documentos binarios de una carpeta en un servidor Web. Puede utilizar este servicio como un sistema simple de administración de documentos en el Web.

Crear el servicio Web

  1. En el menú archivo en Visual Studio.NET, haga clic en nuevo y, a continuación, haga clic en proyecto .
  2. En Proyectos de Visual C# , seleccione el Servicio Web ASP.NET . Escriba o pegue http://localhost/DocumentManagementService para la ubicación y, a continuación, haga clic en Aceptar . De forma predeterminada, Service1.asmx se crea y se muestra en la vista Diseño.
  3. En el menú Ver , haga clic en el código para mostrar la vista de código para Service1.asmx.
  4. Agregue el código de WebMethods siguiente a la clase Service1 :
    
    [WebMethod]
    public bool SaveDocument( Byte[] docbinaryarray, string docname)
    {
    	string strdocPath;
    	strdocPath = "C:\\DocumentDirectory\\" + docname;
    	FileStream objfilestream =new FileStream(strdocPath,FileMode.Create,FileAccess.ReadWrite);
    	objfilestream.Write(docbinaryarray,0,docbinaryarray.Length);
    	objfilestream.Close();
    
    	return true;
    }
    
    [WebMethod]
    public int GetDocumentLen(string DocumentName)
    {
    	string strdocPath;
    	strdocPath = "C:\\DocumentDirectory\\" + DocumentName;
    
    	FileStream objfilestream = new FileStream(strdocPath,FileMode.Open,FileAccess.Read);
    	int len = (int)objfilestream.Length;			
    	objfilestream.Close();
    
    	return len;
    } 
    
    
    [WebMethod]
    public Byte[] GetDocument(string DocumentName)
    {
    	string strdocPath;
    	strdocPath = "C:\\DocumentDirectory\\" + DocumentName;
    
    	FileStream objfilestream = new FileStream(strdocPath,FileMode.Open,FileAccess.Read);
    	int len = (int)objfilestream.Length;			
    	Byte[] documentcontents  = new Byte[len];
    	objfilestream.Read(documentcontents,0,len);
    	objfilestream.Close();
    
    	return documentcontents;	
    } 
    					

    Nota: <root>El código guarda los documentos en el <raíz>: \\DocumentDirectory\\ ruta de acceso de directorio en el servidor. Cambiar esto a la carpeta en el servidor Web donde desea guardar los documentos.

  5. Agregue el espacio de nombres siguiente al principio de la Service1.asmx:
    using System.IO;
  6. Probar el servicio Web:
    1. En el menú Depurar , haga clic en iniciar para iniciar el servicio Web. Esto inicia el explorador Web y aparece la página de Ayuda de la descripción de servicio.
    2. Asegúrese de que los métodos SaveDocument , GetDocument y GetDocumentLen aparecerán.
    3. Cierra la ventana del explorador Web para detener la depuración.

Crear a un cliente para el servicio Web

  1. En el menú archivo en Visual Studio. NET, haga clic en Agregar proyecto y, a continuación, haga clic en Nuevo proyecto .
  2. En la lista de Proyectos de Visual C# , seleccione Aplicación para Windows y, a continuación, haga clic en Aceptar . De forma predeterminada, se crea Form1.
  3. Agregue una referencia de Web al servicio Web, como sigue:
    1. En el Explorador de soluciones, haga clic con el botón secundario en el elemento de proyecto de cliente. A continuación, seleccione Agregar referencia Web en el menú contextual .
    2. En el cuadro de diálogo Agregar referencia Web , escriba la dirección URL del archivo de lenguaje de descripción de servicios Web (WSDL) para el servicio Web y, a continuación, presione ENTRAR.

      Nota: La ubicación predeterminada para el archivo WSDL es http://localhost/DocumentManagementService/Service1.asmx?WSDL.
    3. En el cuadro de diálogo Agregar referencia Web , haga clic en Agregar referencia .
  4. Agregue dos botones a Form1. Establezca la propiedad Text de button1 a Documento de almacén en el servidor . Establezca la propiedad Text de button2 a recuperar desde el servidor .
  5. Haga doble clic en button1 y button2 para crear predeterminado haga clic en controladores de eventos para los botones.
  6. Reemplace los controladores con el siguiente código:
    string sFile = "<file path>";
    
    private void button1_Click(object sender, System.EventArgs e)
    {
    	FileStream objfilestream = new FileStream(sFile,FileMode.Open,FileAccess.Read);
    	int len = (int)objfilestream.Length;
    	Byte[] mybytearray = new Byte[len];
    	objfilestream.Read(mybytearray,0,len);
    	localhost.Service1 myservice = new localhost.Service1();
    	myservice.SaveDocument(mybytearray,sFile.Remove(0,sFile.LastIndexOf("\\")+1));
    	objfilestream.Close();
    }
    
    private void button2_Click(object sender, System.EventArgs e)
    {
    	MemoryStream objstreaminput = new MemoryStream();
    	FileStream objfilestream = new FileStream(sFile.Insert(sFile.LastIndexOf("."),"2"), FileMode.Create,FileAccess.ReadWrite);
    						
    	localhost.Service1 myservice = new localhost.Service1();
    	int len = (int)myservice.GetDocumentLen(sFile.Remove(0,sFile.LastIndexOf("\\")+1)); 
    	Byte[] mybytearray = new Byte[len];
    	mybytearray = myservice.GetDocument(sFile.Remove(0,sFile.LastIndexOf("\\")+1));
    	objfilestream.Write(mybytearray,0,len);
    	objfilestream.Close();
    }
    					
    Nota: la variable sFile debe contener la ruta de acceso local de un documento que se cargarán en el servidor. Cuando se descarga el documento, se coloca en la misma carpeta y se agrega un valor del 2 al nombre de archivo.

  7. Agregue el espacio de nombres siguiente al principio del archivo:
    using System.IO;
  8. En el Explorador de soluciones, haga clic con el botón secundario en el elemento de proyecto de cliente. Seleccione a continuación, establecer como proyecto de inicio en el menú contextual .

Pruébelo

  1. En el menú Depurar , haga clic en iniciar . Aparecerá Form1.
  2. Haga clic en el Documento de almacén en el servidor de botón. Esto llama al método Web SaveDocument . <root>Este método Web guarda el documento local en el <raíz>: carpeta \DocumentDirectory\ en el servidor. Una vez ha transferido el documento, compruebe que el archivo existe en la carpeta de destino.
  3. Haga clic en el botón Recuperar documentos desde el servidor . Esto llama al método Web GetDocument . <root>Este método Web recupera el documento la <raíz>: carpeta \DocumentDirectory\ en el servidor. El documento se guarda en la unidad local que se especifica en el código.

Referencias

Para obtener más información, consulte la documentación de Microsoft Visual Studio .NET.

Propiedades

Id. de artículo: 318425 - Última revisión: lunes, 15 de diciembre de 2003 - Versión: 4.2
La información de este artículo se refiere a:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
Palabras clave: 
kbmt kbhowtomaster KB318425 KbMtes
Traducció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): 318425

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com