Вызов SOAP WSDL WebService из.NET 4 ConsoleApplication. Ошибка заголовка SOAP
Создала консольное приложение.net 4 и добавила веб-ссылку (с именем FACE) для создания прокси-функций. Сервис WSDL является публичным API:
https://webservice.face.gob.es/facturasspp?wsdl
Затем я использую этот скрипт для вызова веб-службы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography.X509Certificates;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
System.Security.Cryptography.X509Certificates.X509Certificate2 cert = new System.Security.Cryptography.X509Certificates.X509Certificate2(@"C:\DATA\cer.pfx", "MyPass*");
FACE.ConsultarEstadosResponse respuesta;
FACE.Service servicio = new GestionaFACE.Service();
try
{
servicio.ClientCertificates.Add(cert);
respuesta = servicio.consultarEstados();
}
catch
{
Console.WriteLine(servicio.Url);
}
}
}
}
Тем не менее, я получаю этот ответ от службы:
104La petición SOAP no está bien construida: no se encuentra el SOAP Заголовок
Это означает, что заголовок SOAP отсутствует. Я ожидал, что Visual Studio автоматически создаст правильный заголовок, так как он имеет определение WSDL и создает прокси для службы.
Также при добавлении сертификата к вызову с помощью servicio.ClientCertificates.Add(cert) моя идея заключалась в том, что информация будет добавлена в заголовок SOAP.
Я вижу в Reference.cs, что класс FACE.service был создан как
public partial class Service : System.Web.Services.Protocols.SoapHttpClientProtocol {
Любые идеи о том, как это исправить или использовать другой подход? Я использую Visual Studio 2010 Express