Mapear la definicion SOAP del WSDL

 Si por cualquier motivo no te gusta la devulucion del WSDL
que nos brinda un Servicio Web, no te preocupes, todo se puede modificar.Gracias
a un articulo de Christian Weyer, puedes alterar, como es este caso la URL que
nos devuleve el la etiqueta <soap:address location=http://www.tuURL.com /> o <soap12:address locationhttp://www.tuURL.com« /> .Casos
reales en los que el IIS contesta por el puerto 80 y estan mapeados en el
firewall los puertos, existen redirecciones, …..

Creamos un fichero SoapAddressReflector.cs dentro del
App_Code

using System.Configuration;
using
System.Web.Services.Description;


namespace
SymbiaIT.Tools.Web.Services.Metadata
{

public class SoapAddressReflector : SoapExtensionReflector


{

public override void
ReflectMethod()

{

ServiceDescription sd =
ReflectionContext.ServiceDescription;

ServiceCollection myServiceCollection =
sd.Services;

foreach (Port port
in myServiceCollection[0].Ports)

{

 

foreach (ServiceDescriptionFormatExtension extension
in port.Extensions)

{

if (extension is SoapAddressBinding)

{

SoapAddressBinding address = (SoapAddressBinding)extension;

address.Location = ConfigurationManager.AppSettings[«SoapAddress»];

}

}

}

}

}

}

 

En las secciones pertinentes del web.config

<configuration>

<appSettings>

<!–
URL del web service, para el parseo soap
–>

<add
key=«SoapAddress« value=«http://scorm.cuadernia.educa.jccm.es/cuadernia/service.asmx«/>


</appSettings>

<system.web>

<webServices>

<soapExtensionReflectorTypes>

<add
type=«SymbiaIT.Tools.Web.Services.Metadata.SoapAddressReflector,
App_code
«/>

</soapExtensionReflectorTypes>

</webServices>


</system.web>

</configuration>

 

4 comentarios sobre “Mapear la definicion SOAP del WSDL”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *