Click to Rate and Give Feedback
Collapse All/Expand All Collapse All
This page is specific to
Microsoft Visual Studio 2010/.NET Framework 4

Other versions are also available for the following:
.NET Framework Class Library
WebChannelFactory<(Of <(TChannel>)>) Class

A class for accessing Web services on a client.

System..::.Object
  System.ServiceModel.Channels..::.CommunicationObject
    System.ServiceModel..::.ChannelFactory
      System.ServiceModel..::.ChannelFactory<(Of <(TChannel>)>)
        System.ServiceModel.Web..::.WebChannelFactory<(Of <(TChannel>)>)

Namespace:  System.ServiceModel.Web
Assembly:  System.ServiceModel.Web (in System.ServiceModel.Web.dll)
Visual Basic
Public Class WebChannelFactory(Of TChannel As Class) _
    Inherits ChannelFactory(Of TChannel)
C#
public class WebChannelFactory<TChannel> : ChannelFactory<TChannel>
where TChannel : class
Visual C++
generic<typename TChannel>
where TChannel : ref class
public ref class WebChannelFactory : public ChannelFactory<TChannel>
F#
type WebChannelFactory<'TChannel when 'TChannel : not struct> =  
    class
        inherit ChannelFactory<'TChannel>
    end

Type Parameters

TChannel

The type of channel to create.

The WebChannelFactory<(Of <(TChannel>)>) type exposes the following members.

  NameDescription
Public methodWebChannelFactory<(Of <(TChannel>)>)()()()Initializes a new instance of the WebChannelFactory<(Of <(TChannel>)>) class.
Public methodWebChannelFactory<(Of <(TChannel>)>)(Binding)Initializes a new instance of the WebChannelFactory<(Of <(TChannel>)>) class.
Public methodWebChannelFactory<(Of <(TChannel>)>)(ServiceEndpoint)Initializes a new instance of the WebChannelFactory<(Of <(TChannel>)>) class.
Public methodWebChannelFactory<(Of <(TChannel>)>)(String)Initializes a new instance of the WebChannelFactory<(Of <(TChannel>)>) class.
Public methodWebChannelFactory<(Of <(TChannel>)>)(Type)Initializes a new instance of the WebChannelFactory<(Of <(TChannel>)>) class.
Public methodWebChannelFactory<(Of <(TChannel>)>)(Uri)Initializes a new instance of the WebChannelFactory<(Of <(TChannel>)>) class with the specified Uri.
Public methodWebChannelFactory<(Of <(TChannel>)>)(Binding, Uri)Initializes a new instance of the WebChannelFactory<(Of <(TChannel>)>) class with the specified binding and Uri.
Public methodWebChannelFactory<(Of <(TChannel>)>)(String, Uri)Initializes a new instance of the WebChannelFactory<(Of <(TChannel>)>) class with the specified endpoint configuration and Uri.
Top
  NameDescription
Public propertyCredentialsGets the credentials used by clients to communicate a service endpoint over the channels produced by the factory. (Inherited from ChannelFactory.)
Protected propertyDefaultCloseTimeoutGets the default interval of time provided for a close operation to complete. (Inherited from ChannelFactory.)
Protected propertyDefaultOpenTimeoutGets the default interval of time provided for an open operation to complete. (Inherited from ChannelFactory.)
Public propertyEndpointGets the service endpoint to which the channels produced by the factory connect. (Inherited from ChannelFactory.)
Protected propertyIsDisposedGets a value that indicates whether the communication object has been disposed. (Inherited from CommunicationObject.)
Public propertyStateGets a value that indicates the current state of the communication object. (Inherited from CommunicationObject.)
Protected propertyThisLockGets the mutually exclusive lock that protects the class instance during a state transition. (Inherited from CommunicationObject.)
Top
  NameDescription
Public methodAbortCauses a communication object to transition immediately from its current state into the closing state. (Inherited from CommunicationObject.)
Protected methodApplyConfigurationInitializes the channel factory with the behaviors provided by a specified configuration file and with those in the service endpoint of the channel factory. (Inherited from ChannelFactory.)
Public methodBeginClose(AsyncCallback, Object)Begins an asynchronous operation to close a communication object. (Inherited from CommunicationObject.)
Public methodBeginClose(TimeSpan, AsyncCallback, Object)Begins an asynchronous operation to close a communication object with a specified timeout. (Inherited from CommunicationObject.)
Public methodBeginOpen(AsyncCallback, Object)Begins an asynchronous operation to open a communication object. (Inherited from CommunicationObject.)
Public methodBeginOpen(TimeSpan, AsyncCallback, Object)Begins an asynchronous operation to open a communication object within a specified interval of time. (Inherited from CommunicationObject.)
Public methodClose()()()Causes a communication object to transition from its current state into the closed state. (Inherited from CommunicationObject.)
Public methodClose(TimeSpan)Causes a communication object to transition from its current state into the closed state within a specified interval of time. (Inherited from CommunicationObject.)
Public methodCreateChannel()()()Creates a channel of a specified type to a specified endpoint address. (Inherited from ChannelFactory<(Of <(TChannel>)>).)
Public methodCreateChannel(EndpointAddress)Creates a channel that is used to send messages to a service at a specific endpoint address. (Inherited from ChannelFactory<(Of <(TChannel>)>).)
Public methodCreateChannel(EndpointAddress, Uri)Creates a channel that is used to send messages to a service at a specific endpoint address through a specified transport address. (Inherited from ChannelFactory<(Of <(TChannel>)>).)
Protected methodCreateDescriptionCreates a description of the service endpoint. (Inherited from ChannelFactory<(Of <(TChannel>)>).)
Protected methodCreateFactoryBuilds the channel factory for the current endpoint of the factory. (Inherited from ChannelFactory.)
Public methodEndCloseCompletes an asynchronous operation to close a communication object. (Inherited from CommunicationObject.)
Public methodEndOpenCompletes an asynchronous operation to open a communication object. (Inherited from CommunicationObject.)
Protected methodEnsureOpenedOpens the current channel factory if it is not yet opened. (Inherited from ChannelFactory.)
Public methodEquals(Object)Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected methodFaultCauses a communication object to transition from its current state into the faulted state. (Inherited from CommunicationObject.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Protected methodGetCommunicationObjectTypeGets the type of communication object. (Inherited from CommunicationObject.)
Public methodGetHashCodeServes as a hash function for a particular type. (Inherited from Object.)
Public methodGetProperty<(Of <(T>)>)Returns the typed object requested, if present, from the appropriate layer in the channel stack, or nullNothingnullptra null reference (Nothing in Visual Basic) if not present. (Inherited from ChannelFactory.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodInitializeEndpoint(ServiceEndpoint)Initializes the service endpoint of the channel factory with a specified endpoint. (Inherited from ChannelFactory.)
Protected methodInitializeEndpoint(Binding, EndpointAddress)Initializes the service endpoint of the channel factory with a specified binding and address. (Inherited from ChannelFactory.)
Protected methodInitializeEndpoint(String, EndpointAddress)Initializes the service endpoint of the channel factory with a specified address and configuration. (Inherited from ChannelFactory.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Protected methodOnAbortTerminates the inner channel factory of the current channel factory. (Inherited from ChannelFactory.)
Protected methodOnBeginCloseBegins an asynchronous close operation on the inner channel factory of the current channel factory that has a state object associated with it. (Inherited from ChannelFactory.)
Protected methodOnBeginOpenBegins an asynchronous open operation on the inner channel factory of the current channel factory that has a state object associated with it. (Inherited from ChannelFactory.)
Protected methodOnCloseCalls close on the inner channel factory with a specified time-out for the completion of the operation. (Inherited from ChannelFactory.)
Protected methodOnClosedInvoked during the transition of a communication object into the closing state. (Inherited from CommunicationObject.)
Protected methodOnClosingInvoked during the transition of a communication object into the closing state. (Inherited from CommunicationObject.)
Protected methodOnEndCloseCompletes an asynchronous close operation on the inner channel factory of the current channel factory. (Inherited from ChannelFactory.)
Protected methodOnEndOpenCompletes an asynchronous open operation on the inner channel factory of the current channel factory. (Inherited from ChannelFactory.)
Protected methodOnFaultedInserts processing on a communication object after it transitions to the faulted state due to the invocation of a synchronous fault operation. (Inherited from CommunicationObject.)
Protected methodOnOpenCalls open on the inner channel factory of the current channel factory with a specified time-out for the completion of the operation. (Inherited from ChannelFactory.)
Protected methodOnOpenedInitializes a read-only copy of the ClientCredentials object for the channel factory. (Inherited from ChannelFactory.)
Protected methodOnOpeningThis method is called when the WebChannelFactory<(Of <(TChannel>)>) is opened. (Overrides ChannelFactory..::.OnOpening()()().)
Public methodOpen()()()Causes a communication object to transition from the created state into the opened state. (Inherited from CommunicationObject.)
Public methodOpen(TimeSpan)Causes a communication object to transition from the created state into the opened state within a specified interval of time. (Inherited from CommunicationObject.)
Protected methodThrowIfDisposedThrows an exception if the communication object is disposed. (Inherited from CommunicationObject.)
Protected methodThrowIfDisposedOrImmutableThrows an exception if the communication object the State property is not set to the Created state. (Inherited from CommunicationObject.)
Protected methodThrowIfDisposedOrNotOpenThrows an exception if the communication object is not in the Opened state. (Inherited from CommunicationObject.)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Top
  NameDescription
Public eventClosedOccurs when a communication object transitions into the closed state. (Inherited from CommunicationObject.)
Public eventClosingOccurs when a communication object transitions into the closing state. (Inherited from CommunicationObject.)
Public eventFaultedOccurs when a communication object transitions into the faulted state. (Inherited from CommunicationObject.)
Public eventOpenedOccurs when a communication object transitions into the opened state. (Inherited from CommunicationObject.)
Public eventOpeningOccurs when a communication object transitions into the opening state. (Inherited from CommunicationObject.)
Top
  NameDescription
Explicit interface implemetationPrivate methodIDisposable..::.DisposeCloses the current channel factory. (Inherited from ChannelFactory.)
Top

This class is a special ChannelFactory that automatically adds the WebHttpBehavior to the endpoint if it is not already present. Furthermore, it adds a default WebHttpBinding to the endpoint if the binding is not explicitly configured and the address is an HTTP or HTTPS address.

If all the operations of the contract have no return value or have a return value of type Stream, then the WebChannelFactory<(Of <(TChannel>)>) configures the binding for the appropriate content type.

The following code shows how to use the WebChannelFactory<(Of <(TChannel>)>) class to call a service.

Visual Basic
Dim baseAddress As New Uri("http://localhost:8000")
Dim host As New WebServiceHost(GetType(Service), baseAddress)
Try
    host.Open()

    Dim cf As New WebChannelFactory(Of IService)(baseAddress)
    Dim channel As IService = cf.CreateChannel()
    Dim s As String

    Console.WriteLine("Calling EchoWithGet via HTTP GET: ")
    s = channel.EchoWithGet("Hello, world")
    Console.WriteLine("   Output:  0}", s)

    Console.WriteLine("")

    Console.WriteLine("Calling EchoWithPost via HTTP POST: ")
    s = channel.EchoWithPost("Hello, world")
    Console.WriteLine("   Output:  0}", s)

    Console.WriteLine("")

Catch ex As CommunicationException
    Console.WriteLine("An exception occurred: " + ex.Message)
End Try
C#
Uri baseAddress = new Uri("http://localhost:8000");
WebServiceHost host = new WebServiceHost(typeof(Service), baseAddress);
try
{
    host.Open();

    WebChannelFactory<IService> cf = new WebChannelFactory<IService>(baseAddress);
    IService channel = cf.CreateChannel();
    string s;

    Console.WriteLine("Calling EchoWithGet via HTTP GET: ");
    s = channel.EchoWithGet("Hello, world");
    Console.WriteLine("   Output: {0}", s);

    Console.WriteLine("");

    Console.WriteLine("Calling EchoWithPost via HTTP POST: ");
    s = channel.EchoWithPost("Hello, world");
    Console.WriteLine("   Output: {0}", s);

    Console.WriteLine("");
}
catch (CommunicationException ex)
{
    Console.WriteLine("An exception occurred: " + ex.Message);
}

For a full code example, see Basic WCF REST Programming Model Sample.

.NET Framework

Supported in: 4, 3.5

.NET Framework Client Profile

Supported in: 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Rest WCF Exception      spacefish   |   Edit   |   Show History
We can throw WebFaultException<ErrorMessage> on server code
In client code we can use WebChannelFactory to call the function.
WebChannelFactory<IService1> f = new WebChannelFactory<IService1>(new Uri(url));

But when we throw webFaultException in server code.

In client code i get
Additional information: Unable to deserialize XML body with root name 'ErrorMessage' and root namespace '' (for operation 'Get' and contract ('IService1',  'http://tempuri.org/')) using DataContractSerializer. Ensure that the type corresponding to the XML is added to the known types collection of the service.

Tags What's this?: Add a tag
Flag as ContentBug
Processing
© 2012 Microsoft. All rights reserved. Terms of Use | Trademarks | Privacy Statement
Page view tracker