StreamUpgradeProvider Class

Implements a custom upgrade provider, inherited from this abstract base class.

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

public abstract class StreamUpgradeProvider : CommunicationObject

The StreamUpgradeProvider type exposes the following members.

  NameDescription
Protected methodStreamUpgradeProvider()Initializes a new instance of the StreamUpgradeProvider class.
Protected methodStreamUpgradeProvider(IDefaultCommunicationTimeouts)Initializes a new instance of the StreamUpgradeProvider class.
Top

  NameDescription
Protected propertyDefaultCloseTimeoutGets the DefaultCloseTimeout. (Overrides CommunicationObject.DefaultCloseTimeout.)
Protected propertyDefaultOpenTimeoutGets the DefaultOpenTimeout. (Overrides CommunicationObject.DefaultOpenTimeout.)
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.)
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 methodCreateUpgradeAcceptorCreates an instance of StreamUpgradeAcceptor.
Public methodCreateUpgradeInitiatorCreates an instance of StreamUpgradeInitiator.
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.)
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 the default hash function. (Inherited from Object.)
Public methodGetProperty<T>When implemented in a derived class, gets a property of the current stream that represents an initiator of a stream upgrade.
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Protected methodOnAbortInserts processing on a communication object after it transitions to the closing state due to the invocation of a synchronous abort operation. (Inherited from CommunicationObject.)
Protected methodOnBeginCloseInserts processing after a communication object transitions to the closing state due to the invocation of an asynchronous close operation. (Inherited from CommunicationObject.)
Protected methodOnBeginOpenInserts processing on a communication object after it transitions to the opening state due to the invocation of an asynchronous open operation. (Inherited from CommunicationObject.)
Protected methodOnCloseInserts processing on a communication object after it transitions to the closing state due to the invocation of a synchronous close operation. (Inherited from CommunicationObject.)
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 operation on the close of a communication object. (Inherited from CommunicationObject.)
Protected methodOnEndOpenCompletes an asynchronous operation on the open of a communication object. (Inherited from CommunicationObject.)
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 methodOnOpenInserts processing on a communication object after it transitions into the opening state which must complete within a specified interval of time. (Inherited from CommunicationObject.)
Protected methodOnOpenedInvoked during the transition of a communication object into the opened state. (Inherited from CommunicationObject.)
Protected methodOnOpeningInvoked during the transition of a communication object into the opening state. (Inherited from CommunicationObject.)
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

An example of a stream upgrade is to build a compression stream directly on top of the transport stream. To add a security upgrade, you additionally implement a class that derives from StreamSecurityUpgradeProvider. You can implement multiple upgrades, each wrapping the preceding one.

The upgrade process has the following steps:

  1. Implement a class that derives from StreamUpgradeProvider.

  2. Register it. You do this by creating a binding element for it, and registering the provider in a custom binding.

  3. The derived class that you implement creates an instance of StreamUpgradeInitiator, which at run time initiates a request to the other end of its connection to upgrade the channel transport layer.

  4. The derived class that you implement creates an instance of StreamUpgradeAcceptor, which at run time receives the upgrade request from the preceding step and, if possible, accepts the upgrade and returns the upgraded stream to the other side of its connection.

  5. If there are additional upgrade requests, they are processed sequentially, as described in the preceding two steps.

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

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.
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft