Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: oscarj24 en 11 Julio 2011, 04:04 am



Título: [Ayuda] Webservice (archivo wsdl) .NET
Publicado por: oscarj24 en 11 Julio 2011, 04:04 am
Buenas noches.  >:D

Mi problema es el siguiente:

Me dieron un archivo WSDL con las funciones de un web service, con lo cual tengo que generar una clase en C# o VB.net.

Todo comienza al momento de intentar generar el WSDL en una clase con la herramienta "WSDL.exe" desde la consola del Visual Studio 2005, 2008 o 2010 ya que, al intentarlo de diversas formas, se genera un error o una clase vacia.

Segun lo que me dicen, puede existir un problema con los "namespaces" del XML.

Ahora, les dare una explicacion de lo que he estado haciendo hasta el momento.
Por ejemplo, si genero una clase en C#o VB.net de un wsdl como normalmente se deberia hacer usando el comando que figura en la imagen, obtengo el siguiente error:

Comando1-Error1:

(http://dl.dropbox.com/u/15208254/wsdl/error01-wsdl.jpg)

Buscando un poco de informacion al respecto, lei que si especificaba el protocolo "soap12" del wsdl en el comando, se podria generar sin problemas y, al intentarlo, obtuve los siguientes errores (Ver imagen "Comando2-Error2") y, aunque se genero una clase, esta se encuentra vacia  ("Ver imagen "Comando2-Clase-Vacia")

Comando2-Error2:

(http://dl.dropbox.com/u/15208254/wsdl/error02-wsdl.jpg)

Comando2-Clase-Vacia:
(http://dl.dropbox.com/u/15208254/wsdl/error02-wsdl-clase-vacia.jpg)

Por ultimo, decidi buscar otras alternativas y encontre otra herramienta, esta se llama "WSFC.exe" y permite hacer lo mismo que la herramienta que viene por defecto con el Visual Studio (WSDL.exe). Segun la web del creador, esta herramienta es mas beneficiosa que la del Visual Studio y la describe asi:

"WSCF offers a simple yet powerful WSDL Wizard that abstracts away all the nitty-gritty details of WSDL and therefore does not give room for making errors and wrong assumptions just by trying to use and applying everything that can be done stated by the original WSDL specification."

Pueden informarse mas de esto en los siguientes links:

http://www.thinktecture.com/resourcearchive/tools-and-software/wscf (http://www.thinktecture.com/resourcearchive/tools-and-software/wscf)

http://weblogs.thinktecture.com/cweyer/2007/12/running-wscf-07-in-visual-studio-2008.html (http://weblogs.thinktecture.com/cweyer/2007/12/running-wscf-07-in-visual-studio-2008.html)

http://www.thearchitect.co.uk/weblog/archives/2007/05/installer_error_code_2869_on_windows_vista_and_how_to_correc.html (http://www.thearchitect.co.uk/weblog/archives/2007/05/installer_error_code_2869_on_windows_vista_and_how_to_correc.html)

Sin embargo, no obtuve buenos resultados al usar la nueva herramienta, y esta vez utilice un comando parecido a los que usaba en las imagenes anteriores solo que en vez de usar WSDL, usaba WSFC.
 
Código
  1. "WSFC miwsdl.wsdl /l:cs"

y siempre generaba una clase (tambien vacia) pero con una descripcion un poco mas detallada del posible error que existe hasta ahora cuando intento generar la clase del WSDL que poseo.

La descripcion del error que aparecia en la imagen vacia era este:

(http://dl.dropbox.com/u/15208254/wsdl/error03-wscf-clase-vacia.jpg)

Saludos y gracias por su tiempo.  :D


Título: Re: [Ayuda] Webservice (archivo wsdl) .NET
Publicado por: seba123neo en 11 Julio 2011, 04:52 am
Hola, yo he creado varios webservices y nunca me fije en ese archivo .wsdl, simplemente creo una clase normal, y le agrego los metodos, y despues lo paso a formato .asmx que es el formato de los webservices y listo, despues lo publico en el IIS y ya lo carga como webservice, por ejemplo, este es el codigo de un webservcie basico con 2 metodos que retornan un simple boolean.

Código
  1. <%@ WebService Language="VB" Class="wsprueba" %>
  2.  
  3. Imports System.Web.Services
  4.  
  5. <WebService(Namespace:="http://prueba", Description:="Web Service de Prueba")> _
  6. Public Class wsprueba
  7.    Inherits System.Web.Services.WebService
  8.  
  9.    <WebMethod(Description:="Metodo Prueba")> _
  10.    Public Function OnLine() As Boolean
  11.        Return True
  12.    End Function
  13.  
  14.    <WebMethod(Description:="Metodo Prueba 2")> _
  15.    Public Function OnLine2() As Boolean
  16.        Return True
  17.    End Function
  18. End Class

despues si desde un proyecto te queres conectar al webservice, debes ir al menu para agregar una referencia web, le pones la direccion del webservice y ahi te crea el enlace al webservice y lo podes manipular, ver sus metodos, llamarlos..etc, te crea ese archvio .wsdl, pero nunca lo toque.

saludos.



Título: Re: [Ayuda] Webservice (archivo wsdl) .NET
Publicado por: oscarj24 en 11 Julio 2011, 04:55 am
Claro, eso es lo que uno haria si es que hace un webservice desde cero, pero si quieres reutilizar sus metodos usas el wsdl y desde cualquier entorno generas una clase (mas o menos el metodo inverso a lo que dices, gracias por tu tiempo pero no contesta mi pregunta)


Título: Re: [Ayuda] Webservice (archivo wsdl) .NET
Publicado por: seba123neo en 11 Julio 2011, 06:41 am
nunca lo hice, pero recien lo probe y me funciona con un proyecto que ya tengo de visual basic, fui al directorio donde esta el wsdl.exe, en mi caso esta en "C:\Archivos de programa\Microsoft SDKs\Windows\v6.0A\bin", cree un archivo . bat con el comando a ejecutar, y puse en esa carpeta el wsdl de un webservice que tengo en un proyecto de visual basic, el comando es:

Código:
wsdl.exe wsprueba.wsdl /l:VB /serverInterface

ejecuto el .bat y me genera la clase de visual basic con todos los metodos adentro y parametros de los mismos.

probe con tu clase, le cambie que sea para CS y no me lo toma, me dice que no encuentra una ruta de referencia con un archivo ws-tra.xsd, y lo tengo en el mismo directorio, la verdad no se que puede ser.


Título: Re: [Ayuda] Webservice (archivo wsdl) .NET
Publicado por: oscarj24 en 11 Julio 2011, 07:24 am
nunca lo hice, pero recien lo probe y me funciona con un proyecto que ya tengo de visual basic, fui al directorio donde esta el wsdl.exe, en mi caso esta en "C:\Archivos de programa\Microsoft SDKs\Windows\v6.0A\bin", cree un archivo . bat con el comando a ejecutar, y puse en esa carpeta el wsdl de un webservice que tengo en un proyecto de visual basic, el comando es:

Código:
wsdl.exe wsprueba.wsdl /l:VB /serverInterface

ejecuto el .bat y me genera la clase de visual basic con todos los metodos adentro y parametros de los mismos.

probe con tu clase, le cambie que sea para CS y no me lo toma, me dice que no encuentra una ruta de referencia con un archivo ws-tra.xsd, y lo tengo en el mismo directorio, la verdad no se que puede ser.

En realidad creo que algun error debes tener con la ruta de los "xsd" ya que al ubicar todos los archivos que puse en el zip en una carpeta, no te deberia dar problemas como ves en la imagen. Sin embargo, al reconocer los "xsd" y hacer todo normalmente, me genera el mismo error que cite al abrir este tema, gracias por seguir intentandolo.

(http://dl.dropbox.com/u/15208254/wsdl/test.jpg)