void IServiceDescriptionBuilder.BuildServiceDescription(ServiceDescriptionContext context) { if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } WorkflowServiceBehavior workflowServiceBehavior = context.ServiceDescription.Behaviors.Find <WorkflowServiceBehavior>(); if (workflowServiceBehavior == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR2.GetString(SR2.NoWorkflowServiceBehavior))); } workflowServiceBehavior.AddressFilterMode = this.AddressFilterMode; workflowServiceBehavior.IgnoreExtensionDataObject = this.IgnoreExtensionDataObject; workflowServiceBehavior.IncludeExceptionDetailInFaults = this.IncludeExceptionDetailInFaults; workflowServiceBehavior.MaxItemsInObjectGraph = this.MaxItemsInObjectGraph; workflowServiceBehavior.UseSynchronizationContext = this.UseSynchronizationContext; workflowServiceBehavior.ValidateMustUnderstand = this.ValidateMustUnderstand; if (!string.IsNullOrEmpty(this.ConfigurationName)) { workflowServiceBehavior.ConfigurationName = this.ConfigurationName; } if (!string.IsNullOrEmpty(this.Name)) { workflowServiceBehavior.Name = this.Name; } if (!string.IsNullOrEmpty(this.Namespace)) { workflowServiceBehavior.Namespace = this.Namespace; } }
internal static void SetWorkflowOperationBehavior(ContractDescription contractDescription, ServiceDescriptionContext context) { if (contractDescription == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("contractDescription"); } if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } foreach (OperationDescription opDescription in contractDescription.Operations) { WorkflowOperationBehavior behavior = null; KeyValuePair <Type, string> operationKey = new KeyValuePair <Type, string>(opDescription.DeclaringContract.ContractType, opDescription.Name); if (!context.WorkflowOperationBehaviors.TryGetValue(operationKey, out behavior)) { behavior = new WorkflowOperationBehavior(); context.WorkflowOperationBehaviors.Add(operationKey, behavior); behavior.CanCreateInstance = false; } if (opDescription.Behaviors.Find <WorkflowOperationBehavior>() != behavior) { opDescription.Behaviors.Remove(typeof(WorkflowOperationBehavior)); opDescription.Behaviors.Add(behavior); } } }