MetadataResolver.Resolve Метод

Определение

Загружает и разрешает адрес метаданных в объекты ServiceEndpoint для службы.

Перегрузки

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Разрешает адрес метаданных в объекты ServiceEndpoint для заданных контрактов с помощью заданного адреса метаданных.

Resolve(Type, EndpointAddress)

Загружает и разрешает адрес метаданных в коллекцию объектов ServiceEndpoint для заданного контракта по заданному адресу.

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

Разрешает адрес метаданных в объекты ServiceEndpoint для заданных контрактов с помощью заданного адреса метаданных и MetadataExchangeClient.

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Разрешает адрес метаданных в объекты ServiceEndpoint для заданных контрактов с помощью заданного адреса и режима передачи.

Resolve(Type, Uri, MetadataExchangeClientMode)

Разрешает адрес метаданных в объекты ServiceEndpoint для заданного контракта с помощью заданного адреса и режима передачи.

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient)

Разрешает адрес метаданных в объекты ServiceEndpoint для заданных контрактов с помощью заданного адреса, режима передачи и клиента передачи.

Комментарии

Чтобы загрузить метаданные, не разрешая информацию в объекты ServiceEndpoint, используйте System.ServiceModel.Description.MetadataExchangeClient напрямую.

Для всех синхронных и асинхронных методов Resolve возвращается пустая коллекция, если не была импортирована ни одна конечная точка или ни одна из конечных точек не соответствует контракту. Если возвращается пустая коллекция, записывается трассировка предупреждений.

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Разрешает адрес метаданных в объекты ServiceEndpoint для заданных контрактов с помощью заданного адреса метаданных.

public:
 static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(System::Collections::Generic::IEnumerable<System::ServiceModel::Description::ContractDescription ^> ^ contracts, System::ServiceModel::EndpointAddress ^ address);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (System.Collections.Generic.IEnumerable<System.ServiceModel.Description.ContractDescription> contracts, System.ServiceModel.EndpointAddress address);
static member Resolve : seq<System.ServiceModel.Description.ContractDescription> * System.ServiceModel.EndpointAddress -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contracts As IEnumerable(Of ContractDescription), address As EndpointAddress) As ServiceEndpointCollection

Параметры

contracts
IEnumerable<ContractDescription>

Контракты, для которых требуется загрузить и разрешить метаданные.

address
EndpointAddress

Адрес метаданных.

Возвращаемое значение

ServiceEndpointCollection

Коллекция объектов ServiceEndpoint для указанного контракта.

Исключения

Адрес или коллекция контрактов имеет значение null.

Параметр contracts пуст, по крайней мере один член параметра contracts имеет значение «null» или параметр contracts содержит несколько контрактов с совпадающими именами и пространствами имен.

Комментарии

Параметры по умолчанию в System.ServiceModel.Description.MetadataExchangeClient используются для извлечения метаданных, а значением по умолчанию System.ServiceModel.Description.MetadataExchangeClientMode является MetadataExchangeClientMode.MetadataExchange.

Чтобы загрузить метаданные, не разрешая информацию в объекты ServiceEndpoint, используйте System.ServiceModel.Description.MetadataExchangeClient напрямую.

Примечание

Если не была импортирована ни одна конечная точка или ни одна из конечных точек не соответствует контракту, возвращается пустая коллекция. Если возвращается пустая коллекция, записывается трассировка предупреждений.

Применяется к

Resolve(Type, EndpointAddress)

Загружает и разрешает адрес метаданных в коллекцию объектов ServiceEndpoint для заданного контракта по заданному адресу.

public:
 static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(Type ^ contract, System::ServiceModel::EndpointAddress ^ address);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (Type contract, System.ServiceModel.EndpointAddress address);
static member Resolve : Type * System.ServiceModel.EndpointAddress -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contract As Type, address As EndpointAddress) As ServiceEndpointCollection

Параметры

contract
Type

Контракты, для которых требуется загрузить и разрешить метаданные.

address
EndpointAddress

Адрес метаданных.

Возвращаемое значение

ServiceEndpointCollection

Коллекция объектов ServiceEndpoint для указанного контракта.

Исключения

Адрес или контракт имеет значение null.

Примеры

В следующем примере кода показано применение класса MetadataResolver для возвращения метаданных как коллекции объектов ServiceEndpoint, которые затем используются для подключения к экземпляру службы.

// Get the endpoints for such a service
ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient), metaAddress);
Console.WriteLine("Trying all available WS-Transfer metadata endpoints...");

foreach (ServiceEndpoint point in endpoints)
{
    if (point != null)
    {
        // Create a new wcfClient using retrieved endpoints.
        wcfClient = new SampleServiceClient(point.Binding, point.Address);
        Console.WriteLine(
          wcfClient.SampleMethod("Client used the "
          + point.Address.ToString()
          + " address.")
        );
        wcfClient.Close();
    }
}

Комментарии

Используйте метод Resolve, чтобы задать контракт и адрес метаданных для использования при загрузке и разрешении метаданных.

Параметры по умолчанию в System.ServiceModel.Description.MetadataExchangeClient используются для извлечения метаданных, а значением по умолчанию System.ServiceModel.Description.MetadataExchangeClientMode является MetadataExchangeClientMode.MetadataExchange.

Чтобы загрузить метаданные, не разрешая информацию в объекты ServiceEndpoint, используйте System.ServiceModel.Description.MetadataExchangeClient напрямую.

Примечание

Если не была импортирована ни одна конечная точка или ни одна из конечных точек не соответствует контракту, возвращается пустая коллекция. Если возвращается пустая коллекция, записывается трассировка предупреждений.

Этот метод требует указания типа контракта. Вы можете указать контракт, объявив интерфейс службы в клиентском коде или используя клиент WCF, созданный Svcutil.exe. Если интерфейс изменяется (например, добавление новой операции), необходимо обновить интерфейс в клиентском коде или создать новый клиент WCF. В противном случае возникает исключение. Например, в наличии имеется служба, реализующая контракт службы, называемый ICalculator и определяющий Add(), Sub(), Mult() и Div(). Вы создаете клиентское приложение и создаете клиент WCF. После чего к ICalculator добавляется метод Echo(). Если вы напишете приложение, которое вызывается Resolve(Type, EndpointAddress) без создания нового клиента WCF, вы получите следующее исключение.

Unhandled Exception: System.ServiceModel.Description.WsdlImporter+WsdlImportException: Cannot locate operation Echo in Contract ICalculator.

Применяется к

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

Разрешает адрес метаданных в объекты ServiceEndpoint для заданных контрактов с помощью заданного адреса метаданных и MetadataExchangeClient.

public:
 static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(System::Collections::Generic::IEnumerable<System::ServiceModel::Description::ContractDescription ^> ^ contracts, System::ServiceModel::EndpointAddress ^ address, System::ServiceModel::Description::MetadataExchangeClient ^ client);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (System.Collections.Generic.IEnumerable<System.ServiceModel.Description.ContractDescription> contracts, System.ServiceModel.EndpointAddress address, System.ServiceModel.Description.MetadataExchangeClient client);
static member Resolve : seq<System.ServiceModel.Description.ContractDescription> * System.ServiceModel.EndpointAddress * System.ServiceModel.Description.MetadataExchangeClient -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contracts As IEnumerable(Of ContractDescription), address As EndpointAddress, client As MetadataExchangeClient) As ServiceEndpointCollection

Параметры

contracts
IEnumerable<ContractDescription>

Контракты, для которых требуется загрузить и разрешить метаданные.

address
EndpointAddress

Адрес метаданных.

client
MetadataExchangeClient

MetadataExchangeClient используется для извлечения метаданных.

Возвращаемое значение

ServiceEndpointCollection

Коллекция объектов ServiceEndpoint для указанного контракта.

Исключения

Адрес, коллекция контрактов или клиент имеет значение null.

Параметр contracts пуст, по крайней мере один член параметра contracts имеет значение «null» или параметр contracts содержит несколько контрактов с совпадающими именами и пространствами имен.

Комментарии

По умолчанию System.ServiceModel.Description.MetadataExchangeClientMode является MetadataExchangeClientMode.MetadataExchange.

Чтобы загрузить метаданные, не разрешая информацию в объекты ServiceEndpoint, используйте System.ServiceModel.Description.MetadataExchangeClient напрямую.

Примечание

Если не была импортирована ни одна конечная точка или ни одна из конечных точек не соответствует контракту, возвращается пустая коллекция. Если возвращается пустая коллекция, записывается трассировка предупреждений.

Применяется к

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Разрешает адрес метаданных в объекты ServiceEndpoint для заданных контрактов с помощью заданного адреса и режима передачи.

public:
 static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(System::Collections::Generic::IEnumerable<System::ServiceModel::Description::ContractDescription ^> ^ contracts, Uri ^ address, System::ServiceModel::Description::MetadataExchangeClientMode mode);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (System.Collections.Generic.IEnumerable<System.ServiceModel.Description.ContractDescription> contracts, Uri address, System.ServiceModel.Description.MetadataExchangeClientMode mode);
static member Resolve : seq<System.ServiceModel.Description.ContractDescription> * Uri * System.ServiceModel.Description.MetadataExchangeClientMode -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contracts As IEnumerable(Of ContractDescription), address As Uri, mode As MetadataExchangeClientMode) As ServiceEndpointCollection

Параметры

contracts
IEnumerable<ContractDescription>

Контракты, для которых требуется загрузить и разрешить метаданные.

address
Uri

Адрес метаданных.

mode
MetadataExchangeClientMode

Режим получения.

Возвращаемое значение

ServiceEndpointCollection

Коллекция объектов ServiceEndpoint для указанного контракта.

Исключения

Адрес или коллекция контрактов имеет значение null.

Параметр contracts пуст, по крайней мере один член параметра contracts имеет значение «null» или параметр contracts содержит несколько контрактов с совпадающими именами и пространствами имен.

Комментарии

Параметры по умолчанию в System.ServiceModel.Description.MetadataExchangeClient используются для извлечения метаданных.

Чтобы загрузить метаданные, не разрешая информацию в объекты ServiceEndpoint, используйте System.ServiceModel.Description.MetadataExchangeClient напрямую.

Примечание

Если не была импортирована ни одна конечная точка или ни одна из конечных точек не соответствует контракту, возвращается пустая коллекция. Если возвращается пустая коллекция, записывается трассировка предупреждений.

Применяется к

Resolve(Type, Uri, MetadataExchangeClientMode)

Разрешает адрес метаданных в объекты ServiceEndpoint для заданного контракта с помощью заданного адреса и режима передачи.

public:
 static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(Type ^ contract, Uri ^ address, System::ServiceModel::Description::MetadataExchangeClientMode mode);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (Type contract, Uri address, System.ServiceModel.Description.MetadataExchangeClientMode mode);
static member Resolve : Type * Uri * System.ServiceModel.Description.MetadataExchangeClientMode -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contract As Type, address As Uri, mode As MetadataExchangeClientMode) As ServiceEndpointCollection

Параметры

contract
Type

Контракт, для которого требуется загрузить и разрешить метаданные.

address
Uri

Адрес метаданных.

mode
MetadataExchangeClientMode

Режим получения.

Возвращаемое значение

ServiceEndpointCollection

Коллекция объектов ServiceEndpoint для указанного контракта.

Исключения

Адрес или контракт имеет значение null.

Примеры

В следующем примере кода показано применение MetadataResolver для загрузки и возвращения метаданных как коллекции объектов ServiceEndpoint с помощью запроса HTTP GET, а не WS-Transfer.

// Get the endpoints for such a service using Http/Get request
endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient), httpGetMetaAddress.Uri, MetadataExchangeClientMode.HttpGet);
Client.WriteParameters(endpoints);
ISampleService serviceChannel;
Console.WriteLine(
  "\r\nTrying all endpoints from HTTP/Get and with direct service channels...");

foreach (ServiceEndpoint point in endpoints)
{
    if (point != null)
    {
        ChannelFactory<ISampleService> factory = new ChannelFactory<ISampleService>(point.Binding);
        factory.Endpoint.Address = point.Address;
        serviceChannel = factory.CreateChannel();
        Console.WriteLine("Client used the " + point.Address.ToString() + " address.");
        Console.WriteLine(
          serviceChannel.SampleMethod(
            "Client used the " + point.Address.ToString() + " address."
          )
        );
        factory.Close();
    }
}

Комментарии

Используйте метод Resolve, чтобы задать контракт, адрес и механизм загрузки для использования.

Параметры по умолчанию в System.ServiceModel.Description.MetadataExchangeClient используются для извлечения метаданных.

Чтобы загрузить метаданные, не разрешая информацию в объекты ServiceEndpoint, используйте System.ServiceModel.Description.MetadataExchangeClient напрямую.

Примечание

Если не была импортирована ни одна конечная точка или ни одна из конечных точек не соответствует контракту, возвращается пустая коллекция. Если возвращается пустая коллекция, записывается трассировка предупреждений.

Применяется к

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient)

Разрешает адрес метаданных в объекты ServiceEndpoint для заданных контрактов с помощью заданного адреса, режима передачи и клиента передачи.

public:
 static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(System::Collections::Generic::IEnumerable<System::ServiceModel::Description::ContractDescription ^> ^ contracts, Uri ^ address, System::ServiceModel::Description::MetadataExchangeClientMode mode, System::ServiceModel::Description::MetadataExchangeClient ^ client);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve (System.Collections.Generic.IEnumerable<System.ServiceModel.Description.ContractDescription> contracts, Uri address, System.ServiceModel.Description.MetadataExchangeClientMode mode, System.ServiceModel.Description.MetadataExchangeClient client);
static member Resolve : seq<System.ServiceModel.Description.ContractDescription> * Uri * System.ServiceModel.Description.MetadataExchangeClientMode * System.ServiceModel.Description.MetadataExchangeClient -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contracts As IEnumerable(Of ContractDescription), address As Uri, mode As MetadataExchangeClientMode, client As MetadataExchangeClient) As ServiceEndpointCollection

Параметры

contracts
IEnumerable<ContractDescription>

Контракты, для которых требуется загрузить и разрешить метаданные.

address
Uri

Адрес метаданных.

mode
MetadataExchangeClientMode

Режим получения.

client
MetadataExchangeClient

MetadataExchangeClient используется для извлечения метаданных.

Возвращаемое значение

ServiceEndpointCollection

Коллекция объектов ServiceEndpoint для указанного контракта.

Исключения

Адрес, коллекция контрактов или клиент имеет значение null.

Параметр contracts пуст, по крайней мере один член параметра contracts имеет значение «null» или параметр contracts содержит несколько контрактов с совпадающими именами и пространствами имен.

Комментарии

Чтобы загрузить метаданные, не разрешая информацию в объекты ServiceEndpoint, используйте System.ServiceModel.Description.MetadataExchangeClient напрямую.

Примечание

Если не была импортирована ни одна конечная точка или ни одна из конечных точек не соответствует контракту, возвращается пустая коллекция. Если возвращается пустая коллекция, записывается трассировка предупреждений.

Применяется к