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
Адрес метаданных.
Возвращаемое значение
Коллекция объектов 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
Адрес метаданных.
Возвращаемое значение
Коллекция объектов 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 используется для извлечения метаданных.
Возвращаемое значение
Коллекция объектов 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
Адрес метаданных.
Режим получения.
Возвращаемое значение
Коллекция объектов 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
Адрес метаданных.
Режим получения.
Возвращаемое значение
Коллекция объектов 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
Адрес метаданных.
Режим получения.
- client
- MetadataExchangeClient
MetadataExchangeClient используется для извлечения метаданных.
Возвращаемое значение
Коллекция объектов ServiceEndpoint для указанного контракта.
Исключения
Адрес, коллекция контрактов или клиент имеет значение null
.
Параметр contracts
пуст, по крайней мере один член параметра contracts
имеет значение «null» или параметр contracts
содержит несколько контрактов с совпадающими именами и пространствами имен.
Комментарии
Чтобы загрузить метаданные, не разрешая информацию в объекты ServiceEndpoint, используйте System.ServiceModel.Description.MetadataExchangeClient напрямую.
Примечание
Если не была импортирована ни одна конечная точка или ни одна из конечных точек не соответствует контракту, возвращается пустая коллекция. Если возвращается пустая коллекция, записывается трассировка предупреждений.