Чтение локального файла WSDL с помощью XmlReader

c# xml wsdl

362 просмотра

1 ответ

617 Репутация автора

Я пытаюсь заставить WSDLImporter работать с локальным WSDL-файлом и у меня возникают некоторые проблемы. У удаленного файла нет проблем, так как я использую MetaDataExchangeClient, например:

    private MetadataSet GetRemoteMetaData(string wsdlUrl)
    {
        var address = new Uri(wsdlUrl);
        var mexMode = MetadataExchangeClientMode.HttpGet;
        var metadataExchangeClient = new MetadataExchangeClient(address, mexMode);
        metadataExchangeClient.ResolveMetadataReferences = true;
        ServicePointManager.ServerCertificateValidationCallback =
            ((sender, certificate, chain, sslPolicyErrors) => true);
        ICredentials networkCredential = new NetworkCredential("username", "password", "domain");
        metadataExchangeClient.HttpCredentials = networkCredential;
        return metadataExchangeClient.GetMetadata();
    }

Но для локальных файлов я пытаюсь использовать XmlReader следующим образом:

    private MetadataSet GetLocalMetaData(string wsdlPath)
    {
        return MetadataSet.ReadFrom(XmlReader.Create(wsdlPath));
    } 

и получите это исключение:

<definitions xmlns='http://schemas.xmlsoap.org/wsdl/'> was not expected.

Так что кажется, что он не может обработать пространство имен / префикс. Я знаю, что XmlReader также может принимать класс XmlReaderSettings, поэтому я немного поиграл с ним, но не смог найти ничего, что сработало.

Любая помощь будет оценена.

Автор: user1776562 Источник Размещён: 18.07.2016 01:47

Ответы (1)


0 плюса

1397 Репутация автора

public MetadataSet GetRemoteMetadata(string wsdlFilePath)
{
    var xmlDoc = XDocument.Load(wsdlFilePath);
    var reader = xmlDoc.CreateReader();
    var serviceDescription = System.Web.Services.Description.ServiceDescription.Read(reader);
    var metadataDocuments = new MetadataSection[] {
        MetadataSection.CreateFromServiceDescription(serviceDescription)
    };
    return new MetadataSet(metadataDocuments);
}
Автор: mbursill Размещён: 14.12.2018 11:29
Вопросы из категории :
32x32