Proyecto de ejemplo que expone un servicio SOAP (CoreWCF) que consulta la API REST Countries y devuelve información de país.
- .NET SDK 9.0 (o compatible instalada en el sistema)
- (Opcional) Postman o curl para probar las llamadas SOAP
CountrySoapHost/— proyecto principal que contiene el host SOAPProgram.cs— configuración del host y mapeo de/soapICountryInfoService.cs— contrato del servicioCountryInfoService.cs— implementación que consultarestcountries.com
- Abrir una terminal en la carpeta del proyecto:
cd "integracionSOAP\integration-soap-rest\CountrySoapHost"- Ejecutar con el perfil HTTPS (recomendado):
dotnet run --launch-profile "https"- Con este perfil la aplicación escuchará en
https://localhost:7217yhttp://localhost:5121(segúnlaunchSettings.json). - Para ver el WSDL:
https://localhost:7217/soap?wsdl(ohttp://localhost:5121/soap?wsdlsi ejecutas el perfilhttp).
- (Si usas HTTPS) confiar en el certificado de desarrollo si es necesario:
dotnet dev-certs https --trust- URL (HTTP):
http://localhost:5121/soap - URL (HTTPS):
https://localhost:7217/soap - Método:
POST - Headers:
Content-Type: text/xml; charset=utf-8SOAPAction: "http://tempuri.org/ICountryInfoService/GetCountryInfo"(confirmar elSOAPActionexacto en el WSDL)
Cuerpo (raw XML):
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:GetCountryInfo>
<tem:countryCode>US</tem:countryCode>
</tem:GetCountryInfo>
</soapenv:Body>
</soapenv:Envelope>Notas de resolución de errores comunes
- Error
WRONG_VERSION_NUMBERoEPROTO: significa que se intentó hacer TLS (https) contra un puerto que está sirviendo solo HTTP. Usa la URL y el puerto correctos:https://localhost:7217para HTTPS ohttp://localhost:5121para HTTP. - Si el WSDL no carga en HTTPS porque el certificado no es confiable, ejecuta
dotnet dev-certs https --trusto desactiva temporalmente la verificación SSL en Postman. - Si recibes
415 Unsupported Media Type, asegúrate de queContent-Typeseatext/xml; charset=utf-8.