MetadataResolver.BeginResolve Method (Type, EndpointAddress, AsyncCallback, Object)


Begins an asynchronous call that resolves a metadata address into the ServiceEndpoint objects for the specified contract using the specified address and asynchronous state and delegate.

Namespace:   System.ServiceModel.Description
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

public static IAsyncResult BeginResolve(
	Type contract,
	EndpointAddress address,
	AsyncCallback callback,
	object asyncState


Type: System.Type

The contract for which to download and resolve metadata.

Type: System.ServiceModel.EndpointAddress

The metadata address.

Type: System.AsyncCallback

The asynchronous callback delegate invoked when the call is complete.

Type: System.Object

The state associated with the asynchronous call.

Return Value

Type: System.IAsyncResult

The IAsyncResult that references the asynchronous resolve operation.

Exception Condition

The address, contract, or callback is null.

The default settings on the System.ServiceModel.Description.MetadataExchangeClient are used to retrieve the metadata and the default System.ServiceModel.Description.MetadataExchangeClientMode is MetadataExchangeClientMode.MetadataExchange.

To download metadata but not resolve the information into ServiceEndpoint objects, use the System.ServiceModel.Description.MetadataExchangeClient directly.


An empty collection is returned if no endpoints were imported or if no endpoints matched the contract. If an empty collection is returned, a warning trace is written.

This method requires that you specify a contract type. You can specify the contract by declaring the service interface in the client code or by using a WCF client generated by Svcutil.exe. If the interface changes (adding a new operation, for example) you must update the interface in the client code or generate a new WCF client. If you do not, an exception is thrown. For example, you have a service that implements a service contract called ICalculator that defines Add(), Sub(), Mult(), and Div(). You create a client application and generate WCF client. You then add a method to ICalculator called Echo(). If you then write an application that calls Resolve(Type, EndpointAddress) without generating a new WCF client you get the following exception.

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

.NET Framework
Available since 3.0
Return to top