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
{
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>
oye.. y donde invocas el metodo…
o lo realiza automatico…
gracias!!
Efectivamente, solo con esos datos se hace la llamada.
Como hago para enviar datos a un servidor utilizando SOAP, WSDL y XSD? Debo enviar una serie de datos y recibir la respuesta. Gracias!! 🙂
Muy Buen post muchas Gracias!!!
Funciono perfecto!!!