Crear un servicio web ASMX a partir de un archivo WSDL


Tengo un archivo WSDL y estoy intentando crear un servicio web que se ajuste al WSDL.

He creado clientes utilizando archivos WSDL que consumen un servicio existente, pero nunca he creado un servicio web que necesite seguir un WSDL específico.

He ido tan lejos como para usar:

wsdl.exe mywsdl.wsdl /l:VB /serverInterface

Ahora tengo a .archivo vb generado a partir de ese WSDL. Sin embargo, no estoy seguro de lo que se supone que debo hacer con este archivo VB. Parece que tiene una interfaz pública, pero no clase que implementa la interfaz. También tiene un montón de clases parciales para los tipos en el WSDL.

Esperaba que hubiera algún tipo de trozo donde puse el código para completar las llamadas de servicio. Solo he creado servicios web simples antes y ninguno de ellos utiliza interfaces públicas, así que no estoy familiarizado con lo que está pasando aquí.

En este punto no estoy seguro de cómo uso el generado .archivo vb y hacer que funcione con un .archivo asmx y qué codificación adicional se necesita para completa la interfaz.

Author: John Saunders, 2009-02-14

2 answers

Si ya ha creado interfaces, debe implementar esas interfaces.
Simplemente cree un nuevo servicio web y agregue la interfaz que generó para que herede esa interfaz. Visual Studio puede generar automáticamente stubs para cada método en la interfaz. Márquelos con el atributo WebMethod y ponga algún código que devolverá algunos datos/resultados de prueba.

Si tienes inteface (con algunos atributos más que se generaron automáticamente:


public interface IRealWebService
{
    string GetName();

}

Usted debe hacer nuevo servicio:


public class WebTestService : System.Web.Services.WebService, IRealWebService
{

    #region IRealWebService Members

    [WebMethod]
    public string GetName()
    {
        return "It Works !!!!";
    }
    #endregion
}
 33
Author: Robert Vuković,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-14 18:58:20

Todo lo que necesita hacer es crear una clase que hereda de la interfaz que WSDL.EXE ha generado, y luego implementar los métodos desde la interfaz.

 4
Author: John Saunders,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-14 18:46:04