WorkflowHostingEndpoint Class
An abstract implementation of ServiceEndpoint. Derive from this class to expose contracts that support workflow creation and bookmark resumption.
Assembly: System.ServiceModel.Activities (in System.ServiceModel.Activities.dll)
System.ServiceModel.Description::ServiceEndpoint
System.ServiceModel.Activities::WorkflowHostingEndpoint
System.ServiceModel.Activities.Description::WorkflowRuntimeEndpoint
| Name | Description | |
|---|---|---|
![]() | WorkflowHostingEndpoint(Type^) | Creates a new instance of the WorkflowHostingEndpoint class with the specified contract type. |
![]() | WorkflowHostingEndpoint(Type^, Binding^, EndpointAddress^) | Creates a new instance of the WorkflowHostingEndpoint class with the specified contract type, binding, and endpoint address. |
| Name | Description | |
|---|---|---|
![]() | Address | Gets or sets the endpoint address for the service endpoint.(Inherited from ServiceEndpoint.) |
![]() | Behaviors | Gets the behaviors for the service endpoint.(Inherited from ServiceEndpoint.) |
![]() | Binding | Gets or sets the binding for the service endpoint.(Inherited from ServiceEndpoint.) |
![]() | Contract | Gets the contract for the service endpoint.(Inherited from ServiceEndpoint.) |
![]() | CorrelationQueries | Gets a collection of CorrelationQuery instances . |
![]() | EndpointBehaviors | Gets the endpoint behaviors for the service.(Inherited from ServiceEndpoint.) |
![]() | IsSystemEndpoint | Gets or sets whether the service endpoint is generated by the system as opposed to being user-defined.(Inherited from ServiceEndpoint.) |
![]() | ListenUri | Gets or sets the URI at which the service endpoint listens.(Inherited from ServiceEndpoint.) |
![]() | ListenUriMode | Gets or sets how the transport handles the URI that is provided for the service to listen on.(Inherited from ServiceEndpoint.) |
![]() | Name | Gets or sets the name of the service endpoint.(Inherited from ServiceEndpoint.) |
| Name | Description | |
|---|---|---|
![]() | Equals(Object^) | Determines whether the specified object is equal to the current object.(Inherited from Object.) |
![]() | Finalize() | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.) |
![]() | GetHashCode() | Serves as the default hash function. (Inherited from Object.) |
![]() | GetType() | |
![]() | MemberwiseClone() | |
![]() | OnGetCreationContext(array<Object^>^, OperationContext^, Guid, WorkflowHostingResponseContext^) | Override to create a newWorkflowCreationContext instance. |
![]() | OnGetInstanceId(array<Object^>^, OperationContext^) | Override to return the instance ID for the workflow instance being created. |
![]() | OnResolveBookmark(array<Object^>^, OperationContext^, WorkflowHostingResponseContext^, Object^%) | Override to return a bookmark to be resumed on the workflow instance. |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
The following example shows how to derive a class from the WorkflowHostingEndpoint class.
using System; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.ServiceModel; using System.ServiceModel.Activities; using System.ServiceModel.Channels; namespace Microsoft.Samples.WF.CreationEndpoint { public class CreationEndpoint : WorkflowHostingEndpoint { static Uri defaultBaseUri; public CreationEndpoint(Binding binding, EndpointAddress address) : base(typeof(IWorkflowCreation), binding, address) { } public CreationEndpoint():this (GetDefaultBinding(), new EndpointAddress(new Uri(DefaultBaseUri, new Uri(Guid.NewGuid().ToString(), UriKind.Relative)))) { } static Uri DefaultBaseUri { get { if (defaultBaseUri == null) { defaultBaseUri = new Uri(string.Format(CultureInfo.InvariantCulture, "net.pipe://localhost/workflowCreationEndpoint/{0}/{1}", Process.GetCurrentProcess().Id, AppDomain.CurrentDomain.Id)); } return defaultBaseUri; } } //defaults to NetNamedPipeBinding public static Binding GetDefaultBinding() { return new NetNamedPipeBinding(NetNamedPipeSecurityMode.None) { TransactionFlow = true }; } protected override Guid OnGetInstanceId(object[] inputs, OperationContext operationContext) { //Create was called by client if (operationContext.IncomingMessageHeaders.Action.EndsWith("Create")) { return Guid.Empty; } //CreateWithInstanceId was called by client else if (operationContext.IncomingMessageHeaders.Action.EndsWith("CreateWithInstanceId")) { return (Guid)inputs[1]; } else { throw new InvalidOperationException("Invalid Action: " + operationContext.IncomingMessageHeaders.Action); } } protected override WorkflowCreationContext OnGetCreationContext(object[] inputs, OperationContext operationContext, Guid instanceId, WorkflowHostingResponseContext responseContext) { WorkflowCreationContext creationContext = new WorkflowCreationContext(); if (operationContext.IncomingMessageHeaders.Action.EndsWith("Create")) { Dictionary<string, object> arguments = (Dictionary<string, object>)inputs[0]; if (arguments != null && arguments.Count > 0) { foreach (KeyValuePair<string, object> pair in arguments) { //arguments to pass to the workflow creationContext.WorkflowArguments.Add(pair.Key, pair.Value); } } //reply to client with instanceId responseContext.SendResponse(instanceId, null); } else if (operationContext.IncomingMessageHeaders.Action.EndsWith("CreateWithInstanceId")) { Dictionary<string, object> arguments = (Dictionary<string, object>)inputs[0]; if (arguments != null && arguments.Count > 0) { foreach (KeyValuePair<string, object> pair in arguments) { //arguments to pass to workflow creationContext.WorkflowArguments.Add(pair.Key, pair.Value); } } } else { throw new InvalidOperationException("Invalid Action: " + operationContext.IncomingMessageHeaders.Action); } return creationContext; } } //service contract exposed from the endpoint [ServiceContract(Name = "IWorkflowCreation")] public interface IWorkflowCreation { [OperationContract(Name = "Create")] Guid Create(IDictionary<string, object> inputs); [OperationContract(Name = "CreateWithInstanceId", IsOneWay=true)] void CreateWithInstanceId(IDictionary<string, object> inputs, Guid instanceId); } }
Available since 4.0
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.


