Written by: thempra on 23/04/2008 @ 08:00
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 location=»http://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
{
publicclassSoapAddressReflector : SoapExtensionReflector
{
publicoverridevoid ReflectMethod()
{
ServiceDescription sd = ReflectionContext.ServiceDescription;
ServiceCollection myServiceCollection = sd.Services;
foreach (Port port in myServiceCollection[0].Ports)
{
foreach (ServiceDescriptionFormatExtension extension in port.Extensions)
{
if (extension isSoapAddressBinding)
{
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 –>
<addkey=«SoapAddress«value=«http://scorm.cuadernia.educa.jccm.es/cuadernia/service.asmx«/>
</appSettings>
<system.web>
<webServices>
<soapExtensionReflectorTypes>
<addtype=«SymbiaIT.Tools.Web.Services.Metadata.SoapAddressReflector, App_code«/>
</soapExtensionReflectorTypes>
</webServices>
</system.web>
</configuration>
Catogories: .NET, IIS