public static void ReplaceFormatterBehavior(OperationDescription operationDescription, IWcfMessageEncodingController messageEncodingController, ServiceEndpoint endpoint) { // look for and remove the DataContract behavior if it is present IOperationBehavior formatterBehavior = operationDescription.Behaviors.Remove <DataContractSerializerOperationBehavior>(); if (formatterBehavior == null) { // look for and remove the XmlSerializer behavior if it is present formatterBehavior = operationDescription.Behaviors.Remove <XmlSerializerOperationBehavior>(); if (formatterBehavior == null) { // look for delegating formatter behavior var contextFormatterBehavior = operationDescription.Behaviors.Find <WcfContextFormatterBehavior>(); if (contextFormatterBehavior == null) { throw new InvalidOperationException( "Could not find DataContractFormatter or XmlSerializer on the contract"); } } } operationDescription.Behaviors.Insert(0, new WcfContextFormatterBehavior(formatterBehavior, messageEncodingController, endpoint)); }
public WcfContextFormatterBehavior(IOperationBehavior innerFormatterBehavior, IWcfMessageEncodingController messageEncodingController, ServiceEndpoint endpoint) { _innerFormatterBehavior = innerFormatterBehavior; _endpoint = endpoint; _messageEncodingController = messageEncodingController; }
// This method runs validators (both builtin and ones in description). // Precondition: EnsureInvariants() should already have been called. void Validate(bool runOperationValidators, bool isForService) { // contract behaviors ContractDescription contract = Contract; for (int j = 0; j < contract.ContractBehaviors.Count; j++) { IContractBehavior iContractBehavior = contract.ContractBehaviors[j]; iContractBehavior.Validate(contract, this); } // endpoint behaviors for (int j = 0; j < EndpointBehaviors.Count; j++) { IEndpointBehavior ieb = EndpointBehaviors[j]; ieb.Validate(this); } // operation behaviors if (runOperationValidators) { for (int j = 0; j < contract.Operations.Count; j++) { OperationDescription op = contract.Operations[j]; TaskOperationDescriptionValidator.Validate(op, isForService); for (int k = 0; k < op.OperationBehaviors.Count; k++) { IOperationBehavior iob = op.OperationBehaviors[k]; iob.Validate(op); } } } }
public static void ReplaceFormatterBehavior(OperationDescription operationDescription, EndpointAddress address) { // look for and remove the DataContract behavior if it is present IOperationBehavior formatterBehavior = operationDescription.Behaviors.Remove <DataContractSerializerOperationBehavior>(); if (formatterBehavior == null) { // look for and remove the XmlSerializer behavior if it is present formatterBehavior = operationDescription.Behaviors.Remove <XmlSerializerOperationBehavior>(); if (formatterBehavior == null) { // look for delegating formatter behavior DelegatingFormatterBehavior existingDelegatingFormatterBehavior = operationDescription.Behaviors.Find <DelegatingFormatterBehavior>(); if (existingDelegatingFormatterBehavior == null) { throw new InvalidOperationException("Could not find DataContractFormatter or XmlSerializer on the contract"); } } } //remember what the innerFormatterBehavior was DelegatingFormatterBehavior delegatingFormatterBehavior = new DelegatingFormatterBehavior(address); delegatingFormatterBehavior.InnerFormatterBehavior = formatterBehavior; operationDescription.Behaviors.Add(delegatingFormatterBehavior); }
private static void TryGetSurrogateBehavior(OperationDescription operationDescription, ref IOperationBehavior original, ref IOperationBehavior surrogate) { if (!IsUntypedMessage(operationDescription.Messages[0]) && operationDescription.Messages[0].Body.Parts.Count != 0) { var webGetAttribute = operationDescription.Behaviors.Find<WebGetAttribute>(); if (webGetAttribute != null) { original = webGetAttribute; surrogate = new WebInvokeAttribute { BodyStyle = webGetAttribute.BodyStyle, Method = "NONE", RequestFormat = webGetAttribute.RequestFormat, ResponseFormat = webGetAttribute.ResponseFormat, UriTemplate = webGetAttribute.UriTemplate }; } else { var webInvokeAttribute = operationDescription.Behaviors.Find<WebInvokeAttribute>(); if (webInvokeAttribute != null && webInvokeAttribute.Method == "GET") { original = webInvokeAttribute; surrogate = new WebInvokeAttribute { BodyStyle = webInvokeAttribute.BodyStyle, Method = "NONE", RequestFormat = webInvokeAttribute.RequestFormat, ResponseFormat = webInvokeAttribute.ResponseFormat, UriTemplate = webInvokeAttribute.UriTemplate }; } } } }
protected MessageContractExporter(WsdlExporter exporter, WsdlContractConversionContext context, OperationDescription operation, IOperationBehavior extension) { this.exporter = exporter; this.contractContext = context; this.operation = operation; this.extension = extension; }
protected MessageContractExporter(WsdlExporter exporter, WsdlContractConversionContext context, OperationDescription operation, IOperationBehavior extension) { this.exporter = exporter; this.contractContext = context; this.operation = operation; this.extension = extension; }
private static bool IsDefaultOperationBehavior(IOperationBehavior behavior) { Debug.Assert(behavior != null, "Parameter must not be null."); string name = behavior.GetType().FullName; return(defaultOperationBehaviorNames.Contains(name)); }
private static Uri GetOperationInfo(MethodInfo operation, Uri baseAddress, out string method, out IOperationBehavior webbehavior, //out WebInvokeAttribute webinvoke, out OperationContractAttribute operationcontract, out WebMessageFormat requestformat, out WebMessageFormat responseformat) { var customAttributes = operation.GetCustomAttributes(false); webbehavior = customAttributes.Single(a => a is WebInvokeAttribute || a is WebGetAttribute) as IOperationBehavior; operationcontract = customAttributes.Single(a => a is OperationContractAttribute) as OperationContractAttribute; if (webbehavior is WebInvokeAttribute) { requestformat = ((WebInvokeAttribute)webbehavior).RequestFormat; responseformat = ((WebInvokeAttribute)webbehavior).ResponseFormat; var relative = new Uri(((WebInvokeAttribute)webbehavior).UriTemplate, UriKind.Relative); var endpoint = new Uri(baseAddress, relative); method = ((WebInvokeAttribute)webbehavior).Method; return(endpoint); } if (webbehavior is WebGetAttribute) { requestformat = ((WebGetAttribute)webbehavior).RequestFormat; responseformat = ((WebGetAttribute)webbehavior).ResponseFormat; var relative = new Uri(((WebGetAttribute)webbehavior).UriTemplate, UriKind.Relative); var endpoint = new Uri(baseAddress, relative); method = "GET"; return(endpoint); } throw new NotSupportedException(webbehavior.GetType().FullName + " is not supported."); }
private void SetBehaviors() { ValidationBehavior validation = new ValidationBehavior(true, false, ruleSet); endpointBehavior = (IEndpointBehavior)validation; contractBehavior = (IContractBehavior)validation; operationBehavior = (IOperationBehavior)validation; }
//public static ISearchManager GetSearchManagerFromAddress(string address) //{ // string tabName = GetWindowTabNameFromAddress(address); // if (string.IsNullOrEmpty(tabName)) // return null; // return GetSearchManagerFromWindowTab(tabName); //} internal static void CopyAttributeBehaviors(ServiceDescription description, Type[] behaviorTypes, string derivedMethodName, string[] operationNames) { Type serviceType = description.ServiceType; MethodInfo getEntriesMethod = serviceType.GetMethod(derivedMethodName, BindingFlags.FlattenHierarchy | BindingFlags.Instance | BindingFlags.NonPublic); foreach (Type behaviorType in behaviorTypes) { object[] attrs = getEntriesMethod.GetCustomAttributes(behaviorType, true); if (attrs != null && attrs.Length > 0) { IOperationBehavior attrAsBehavior = (IOperationBehavior)attrs[0]; foreach (ServiceEndpoint endpoint in description.Endpoints) { foreach (OperationDescription od in endpoint.Contract.Operations) { if (operationNames.Contains(od.Name)) { od.Behaviors.Remove(behaviorType); od.Behaviors.Add(attrAsBehavior); } } } } } }
private void SetBehaviors() { ValidatingBehavior validation = new ValidatingBehavior(true, false, Ruleset); _endpointBehavior = (IEndpointBehavior)validation; _contractBehavior = (IContractBehavior)validation; _operationBehavior = (IOperationBehavior)validation; }
private void SetBehaviors() { ValidationBehavior validation = new ValidationBehavior(true, false, ruleSet); endpointBehavior = (IEndpointBehavior)validation; contractBehavior = (IContractBehavior)validation; operationBehavior = (IOperationBehavior)validation; }
public void ApplyDispatchBehavior(OperationDescription description, DispatchOperation dispatch) { _curBehavior = new CustomDataContractSerializerOperationBehavior(description); IOperationBehavior innerBehavior = _curBehavior; innerBehavior.ApplyDispatchBehavior(description, dispatch); }
public void ApplyClientBehavior(OperationDescription description, ClientOperation proxy) { _curBehavior = new CustomDataContractSerializerOperationBehavior(description); IOperationBehavior innerBehavior = _curBehavior; innerBehavior.ApplyClientBehavior(description, proxy); }
// ────────────────────────── Private Members ────────────────────────── private static void SwapBehaviors(OperationDescription operationDescription, IOperationBehavior remove, IOperationBehavior add) { if (remove != null && add != null) { operationDescription.Behaviors.Remove(remove); operationDescription.Behaviors.Add(add); } }
private static void SwapBehaviors(OperationDescription operationDescription, IOperationBehavior remove, IOperationBehavior add) { if (remove != null && add != null) { operationDescription.Behaviors.Remove(remove); operationDescription.Behaviors.Add(add); } }
static void BindOperations(ContractDescription contract, ClientRuntime proxy, DispatchRuntime dispatch) { if (!(((proxy == null) != (dispatch == null)))) { throw Fx.AssertAndThrowFatal("DispatcherBuilder.BindOperations: ((proxy == null) != (dispatch == null))"); } MessageDirection local = (proxy == null) ? MessageDirection.Input : MessageDirection.Output; for (int i = 0; i < contract.Operations.Count; i++) { OperationDescription operation = contract.Operations[i]; MessageDescription first = operation.Messages[0]; if (first.Direction != local) { if (proxy == null) { proxy = dispatch.CallbackClientRuntime; } ClientOperation proxyOperation = proxy.Operations[operation.Name]; Fx.Assert(proxyOperation != null, ""); for (int j = 0; j < operation.Behaviors.Count; j++) { IOperationBehavior behavior = operation.Behaviors[j]; behavior.ApplyClientBehavior(operation, proxyOperation); } } else { if (dispatch == null) { dispatch = proxy.CallbackDispatchRuntime; } DispatchOperation dispatchOperation = null; if (dispatch.Operations.Contains(operation.Name)) { dispatchOperation = dispatch.Operations[operation.Name]; } if (dispatchOperation == null && dispatch.UnhandledDispatchOperation != null && dispatch.UnhandledDispatchOperation.Name == operation.Name) { dispatchOperation = dispatch.UnhandledDispatchOperation; } if (dispatchOperation != null) { for (int j = 0; j < operation.Behaviors.Count; j++) { IOperationBehavior behavior = operation.Behaviors[j]; behavior.ApplyDispatchBehavior(operation, dispatchOperation); } } } } }
static void FillBehaviorInfo(IOperationBehavior behavior, IWmiInstance existingInstance, out IWmiInstance instance) { Fx.Assert(null != existingInstance, ""); Fx.Assert(null != behavior, ""); instance = null; if (behavior is DataContractSerializerOperationBehavior) { instance = existingInstance.NewInstance("DataContractSerializerOperationBehavior"); DataContractSerializerOperationBehavior specificBehavior = (DataContractSerializerOperationBehavior)behavior; instance.SetProperty(AdministrationStrings.IgnoreExtensionDataObject, specificBehavior.IgnoreExtensionDataObject); instance.SetProperty(AdministrationStrings.MaxItemsInObjectGraph, specificBehavior.MaxItemsInObjectGraph); if (null != specificBehavior.DataContractFormatAttribute) { instance.SetProperty(AdministrationStrings.Style, specificBehavior.DataContractFormatAttribute.Style.ToString()); } } else if (behavior is OperationBehaviorAttribute) { instance = existingInstance.NewInstance("OperationBehaviorAttribute"); OperationBehaviorAttribute specificBehavior = (OperationBehaviorAttribute)behavior; instance.SetProperty(AdministrationStrings.AutoDisposeParameters, specificBehavior.AutoDisposeParameters); instance.SetProperty(AdministrationStrings.Impersonation, specificBehavior.Impersonation.ToString()); instance.SetProperty(AdministrationStrings.ReleaseInstanceMode, specificBehavior.ReleaseInstanceMode.ToString()); instance.SetProperty(AdministrationStrings.TransactionAutoComplete, specificBehavior.TransactionAutoComplete); instance.SetProperty(AdministrationStrings.TransactionScopeRequired, specificBehavior.TransactionScopeRequired); } else if (behavior is TransactionFlowAttribute) { instance = existingInstance.NewInstance("TransactionFlowAttribute"); TransactionFlowAttribute specificBehavior = (TransactionFlowAttribute)behavior; instance.SetProperty(AdministrationStrings.TransactionFlowOption, specificBehavior.Transactions.ToString()); } else if (behavior is XmlSerializerOperationBehavior) { instance = existingInstance.NewInstance("XmlSerializerOperationBehavior"); XmlSerializerOperationBehavior specificBehavior = (XmlSerializerOperationBehavior)behavior; if (null != specificBehavior.XmlSerializerFormatAttribute) { instance.SetProperty(AdministrationStrings.Style, specificBehavior.XmlSerializerFormatAttribute.Style.ToString()); instance.SetProperty(AdministrationStrings.Use, specificBehavior.XmlSerializerFormatAttribute.Use.ToString()); instance.SetProperty(AdministrationStrings.SupportFaults, specificBehavior.XmlSerializerFormatAttribute.SupportFaults.ToString()); } } else if (behavior is IWmiInstanceProvider) { IWmiInstanceProvider instanceProvider = (IWmiInstanceProvider)behavior; instance = existingInstance.NewInstance(instanceProvider.GetInstanceType()); instanceProvider.FillInstance(instance); } else { instance = existingInstance.NewInstance("Behavior"); } if (null != instance) { instance.SetProperty(AdministrationStrings.Type, behavior.GetType().FullName); } }
private static void FillBehaviorInfo(IOperationBehavior behavior, IWmiInstance existingInstance, out IWmiInstance instance) { instance = null; if (behavior is DataContractSerializerOperationBehavior) { instance = existingInstance.NewInstance("DataContractSerializerOperationBehavior"); DataContractSerializerOperationBehavior behavior2 = (DataContractSerializerOperationBehavior)behavior; instance.SetProperty("IgnoreExtensionDataObject", behavior2.IgnoreExtensionDataObject); instance.SetProperty("MaxItemsInObjectGraph", behavior2.MaxItemsInObjectGraph); if (behavior2.DataContractFormatAttribute != null) { instance.SetProperty("Style", behavior2.DataContractFormatAttribute.Style.ToString()); } } else if (behavior is OperationBehaviorAttribute) { instance = existingInstance.NewInstance("OperationBehaviorAttribute"); OperationBehaviorAttribute attribute = (OperationBehaviorAttribute)behavior; instance.SetProperty("AutoDisposeParameters", attribute.AutoDisposeParameters); instance.SetProperty("Impersonation", attribute.Impersonation.ToString()); instance.SetProperty("ReleaseInstanceMode", attribute.ReleaseInstanceMode.ToString()); instance.SetProperty("TransactionAutoComplete", attribute.TransactionAutoComplete); instance.SetProperty("TransactionScopeRequired", attribute.TransactionScopeRequired); } else if (behavior is TransactionFlowAttribute) { instance = existingInstance.NewInstance("TransactionFlowAttribute"); TransactionFlowAttribute attribute2 = (TransactionFlowAttribute)behavior; instance.SetProperty("TransactionFlowOption", attribute2.Transactions.ToString()); } else if (behavior is XmlSerializerOperationBehavior) { instance = existingInstance.NewInstance("XmlSerializerOperationBehavior"); XmlSerializerOperationBehavior behavior3 = (XmlSerializerOperationBehavior)behavior; if (behavior3.XmlSerializerFormatAttribute != null) { instance.SetProperty("Style", behavior3.XmlSerializerFormatAttribute.Style.ToString()); instance.SetProperty("Use", behavior3.XmlSerializerFormatAttribute.Use.ToString()); instance.SetProperty("SupportFaults", behavior3.XmlSerializerFormatAttribute.SupportFaults.ToString()); } } else if (behavior is IWmiInstanceProvider) { IWmiInstanceProvider provider = (IWmiInstanceProvider)behavior; instance = existingInstance.NewInstance(provider.GetInstanceType()); provider.FillInstance(instance); } else { instance = existingInstance.NewInstance("Behavior"); } if (instance != null) { instance.SetProperty("Type", behavior.GetType().FullName); } }
private static void FillBehaviorInfo(IOperationBehavior behavior, IWmiInstance existingInstance, out IWmiInstance instance) { instance = null; if (behavior is DataContractSerializerOperationBehavior) { instance = existingInstance.NewInstance("DataContractSerializerOperationBehavior"); DataContractSerializerOperationBehavior behavior2 = (DataContractSerializerOperationBehavior) behavior; instance.SetProperty("IgnoreExtensionDataObject", behavior2.IgnoreExtensionDataObject); instance.SetProperty("MaxItemsInObjectGraph", behavior2.MaxItemsInObjectGraph); if (behavior2.DataContractFormatAttribute != null) { instance.SetProperty("Style", behavior2.DataContractFormatAttribute.Style.ToString()); } } else if (behavior is OperationBehaviorAttribute) { instance = existingInstance.NewInstance("OperationBehaviorAttribute"); OperationBehaviorAttribute attribute = (OperationBehaviorAttribute) behavior; instance.SetProperty("AutoDisposeParameters", attribute.AutoDisposeParameters); instance.SetProperty("Impersonation", attribute.Impersonation.ToString()); instance.SetProperty("ReleaseInstanceMode", attribute.ReleaseInstanceMode.ToString()); instance.SetProperty("TransactionAutoComplete", attribute.TransactionAutoComplete); instance.SetProperty("TransactionScopeRequired", attribute.TransactionScopeRequired); } else if (behavior is TransactionFlowAttribute) { instance = existingInstance.NewInstance("TransactionFlowAttribute"); TransactionFlowAttribute attribute2 = (TransactionFlowAttribute) behavior; instance.SetProperty("TransactionFlowOption", attribute2.Transactions.ToString()); } else if (behavior is XmlSerializerOperationBehavior) { instance = existingInstance.NewInstance("XmlSerializerOperationBehavior"); XmlSerializerOperationBehavior behavior3 = (XmlSerializerOperationBehavior) behavior; if (behavior3.XmlSerializerFormatAttribute != null) { instance.SetProperty("Style", behavior3.XmlSerializerFormatAttribute.Style.ToString()); instance.SetProperty("Use", behavior3.XmlSerializerFormatAttribute.Use.ToString()); instance.SetProperty("SupportFaults", behavior3.XmlSerializerFormatAttribute.SupportFaults.ToString()); } } else if (behavior is IWmiInstanceProvider) { IWmiInstanceProvider provider = (IWmiInstanceProvider) behavior; instance = existingInstance.NewInstance(provider.GetInstanceType()); provider.FillInstance(instance); } else { instance = existingInstance.NewInstance("Behavior"); } if (instance != null) { instance.SetProperty("Type", behavior.GetType().FullName); } }
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) { foreach (ServiceEndpoint endpoint in serviceDescription.Endpoints) { foreach (OperationDescription operation in endpoint.Contract.Operations) { IOperationBehavior behavior = this.CreateOperationBehavior(); operation.Behaviors.Add(behavior); } } }
public void ApplyDispatchBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.DispatchRuntime dispatchRuntime) { _ob = _ob ?? CreateBehavior(contractDescription.Name); if (_ob == null) { throw new ArgumentException("no behavior instance was found to inject"); } foreach (OperationDescription opDescription in contractDescription.Operations) { opDescription.Behaviors.Add(_ob); } }
public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) { foreach (OperationDescription operation in endpoint.Contract.Operations) { IOperationBehavior serializerBehavior = operation.Behaviors.Find <XmlSerializerOperationBehavior>(); if (null == serializerBehavior) { serializerBehavior = operation.Behaviors.Find <DataContractSerializerOperationBehavior>(); } serializerBehavior.ApplyDispatchBehavior(operation, endpointDispatcher.DispatchRuntime.Operations[operation.Name]); } foreach (DispatchOperation operation in endpointDispatcher.DispatchRuntime.Operations) { operation.Formatter = new CompressionMessageFormatter(this.MessageCompressor, operation.Formatter, null); } }
public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime) { foreach (OperationDescription operation in endpoint.Contract.Operations) { IOperationBehavior serializerBehavior = operation.Behaviors.Find <XmlSerializerOperationBehavior>(); if (null == serializerBehavior) { serializerBehavior = operation.Behaviors.Find <DataContractSerializerOperationBehavior>(); } serializerBehavior.ApplyClientBehavior(operation, clientRuntime.Operations[operation.Name]); } foreach (ClientOperation operation in clientRuntime.Operations) { operation.Formatter = new CompressionMessageFormatter(this.MessageCompressor, null, operation.Formatter); } }
protected override IDispatchMessageFormatter GetRequestDispatchFormatter(OperationDescription operationDescription, ServiceEndpoint endpoint) { IOperationBehavior originalBehavior = null; IOperationBehavior surrogateBehavior = null; TryGetSurrogateBehavior(operationDescription, ref originalBehavior, ref surrogateBehavior); SwapBehaviors(operationDescription, originalBehavior, surrogateBehavior); var formatter = base.GetRequestDispatchFormatter(operationDescription, endpoint); SwapBehaviors(operationDescription, surrogateBehavior, originalBehavior); return(formatter); }
public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) { foreach (OperationDescription opDesc in endpoint.Contract.Operations) { IEnumerable <IOperationBehavior> webBehs = (from webbehavior in opDesc.OperationBehaviors where webbehavior is WebGetAttribute || webbehavior is WebInvokeAttribute select webbehavior); if (webBehs.Count <IOperationBehavior>() == 0) { IOperationBehavior webBeh = null; if (!RESTOperationBehaviors.TryGetValue(opDesc.Name, out webBeh)) { webBeh = new WebGetAttribute(); } opDesc.OperationBehaviors.Add(webBeh); } } }
// This method runs validators (both builtin and ones in description). // Precondition: EnsureInvariants() should already have been called. void Validate(bool runOperationValidators, bool isForService) { // contract behaviors ContractDescription contract = this.Contract; for (int j = 0; j < contract.Behaviors.Count; j++) { IContractBehavior iContractBehavior = contract.Behaviors[j]; iContractBehavior.Validate(contract, this); } // endpoint behaviors if (!isForService) { (PartialTrustValidationBehavior.Instance as IEndpointBehavior).Validate(this); #pragma warning disable 0618 (PeerValidationBehavior.Instance as IEndpointBehavior).Validate(this); #pragma warning restore 0618 (TransactionValidationBehavior.Instance as IEndpointBehavior).Validate(this); (SecurityValidationBehavior.Instance as IEndpointBehavior).Validate(this); (System.ServiceModel.MsmqIntegration.MsmqIntegrationValidationBehavior.Instance as IEndpointBehavior).Validate(this); } for (int j = 0; j < this.Behaviors.Count; j++) { IEndpointBehavior ieb = this.Behaviors[j]; ieb.Validate(this); } // operation behaviors if (runOperationValidators) { for (int j = 0; j < contract.Operations.Count; j++) { OperationDescription op = contract.Operations[j]; TaskOperationDescriptionValidator.Validate(op, isForService); for (int k = 0; k < op.Behaviors.Count; k++) { IOperationBehavior iob = op.Behaviors[k]; iob.Validate(op); } } } }
public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation) { //var serializerBehavior = operationDescription.Behaviors.Find<DataContractSerializerOperationBehavior>(); IOperationBehavior serializerBehavior = operationDescription.Behaviors.Find <XmlSerializerOperationBehavior>(); if (serializerBehavior == null) { serializerBehavior = operationDescription.Behaviors.Find <DataContractSerializerOperationBehavior>(); } if (clientOperation.Formatter == null) { serializerBehavior.ApplyClientBehavior(operationDescription, clientOperation); } IClientMessageFormatter innerClientFormatter = clientOperation.Formatter; clientOperation.Formatter = new EnvelopeNamespaceMessageFormatter(innerClientFormatter) { EnvelopeNamespaces = EnvelopeNamespaces }; }
internal DataContractSerializerMessageContractExporter(WsdlExporter exporter, WsdlContractConversionContext context, OperationDescription operation, IOperationBehavior extension) : base(exporter, context, operation, extension) { }
public DelegatingFormatterBehavior(EndpointAddress address, IOperationBehavior innerFormatterBehavior) { this.endpointAddress = address; this.innerFormatterBehavior = innerFormatterBehavior; }
internal DataContractSerializerMessageContractExporter(WsdlExporter exporter, WsdlContractConversionContext context, OperationDescription operation, IOperationBehavior extension) : base(exporter, context, operation, extension) { }
private static void SetAuthorizationInvokerBehavior(ServiceHostBase serviceHost, IOperationBehavior authorizationInvokerBehavior) { serviceHost.Opening += (sender, args) => { foreach (var ep in serviceHost.Description.Endpoints) { foreach (var od in ep.Contract.Operations) { od.OperationBehaviors.Add(authorizationInvokerBehavior); } } }; }
public static void Configure(ServiceHostBase serviceHost, ServiceAuthenticationManager authenticationManager, IEnumerable <IAuthorizationPolicy> authorizationPolicies, IOperationBehavior authorizationInvokerBehavior, IServiceBehavior errorBehavior) { SetAuthentication(serviceHost, authenticationManager, authorizationPolicies); SetAuthorizationInvokerBehavior(serviceHost, authorizationInvokerBehavior); SetErrorHandlers(serviceHost, errorBehavior); }
static void FillBehaviorInfo(IOperationBehavior behavior, IWmiInstance existingInstance, out IWmiInstance instance) { Fx.Assert(null != existingInstance, ""); Fx.Assert(null != behavior, ""); instance = null; if (behavior is DataContractSerializerOperationBehavior) { instance = existingInstance.NewInstance("DataContractSerializerOperationBehavior"); DataContractSerializerOperationBehavior specificBehavior = (DataContractSerializerOperationBehavior)behavior; instance.SetProperty(AdministrationStrings.IgnoreExtensionDataObject, specificBehavior.IgnoreExtensionDataObject); instance.SetProperty(AdministrationStrings.MaxItemsInObjectGraph, specificBehavior.MaxItemsInObjectGraph); if (null != specificBehavior.DataContractFormatAttribute) { instance.SetProperty(AdministrationStrings.Style, specificBehavior.DataContractFormatAttribute.Style.ToString()); } } else if (behavior is OperationBehaviorAttribute) { instance = existingInstance.NewInstance("OperationBehaviorAttribute"); OperationBehaviorAttribute specificBehavior = (OperationBehaviorAttribute)behavior; instance.SetProperty(AdministrationStrings.AutoDisposeParameters, specificBehavior.AutoDisposeParameters); instance.SetProperty(AdministrationStrings.Impersonation, specificBehavior.Impersonation.ToString()); instance.SetProperty(AdministrationStrings.ReleaseInstanceMode, specificBehavior.ReleaseInstanceMode.ToString()); instance.SetProperty(AdministrationStrings.TransactionAutoComplete, specificBehavior.TransactionAutoComplete); instance.SetProperty(AdministrationStrings.TransactionScopeRequired, specificBehavior.TransactionScopeRequired); } else if (behavior is TransactionFlowAttribute) { instance = existingInstance.NewInstance("TransactionFlowAttribute"); TransactionFlowAttribute specificBehavior = (TransactionFlowAttribute)behavior; instance.SetProperty(AdministrationStrings.TransactionFlowOption, specificBehavior.Transactions.ToString()); } else if (behavior is XmlSerializerOperationBehavior) { instance = existingInstance.NewInstance("XmlSerializerOperationBehavior"); XmlSerializerOperationBehavior specificBehavior = (XmlSerializerOperationBehavior)behavior; if (null != specificBehavior.XmlSerializerFormatAttribute) { instance.SetProperty(AdministrationStrings.Style, specificBehavior.XmlSerializerFormatAttribute.Style.ToString()); instance.SetProperty(AdministrationStrings.Use, specificBehavior.XmlSerializerFormatAttribute.Use.ToString()); instance.SetProperty(AdministrationStrings.SupportFaults, specificBehavior.XmlSerializerFormatAttribute.SupportFaults.ToString()); } } else if (behavior is IWmiInstanceProvider) { IWmiInstanceProvider instanceProvider = (IWmiInstanceProvider)behavior; instance = existingInstance.NewInstance(instanceProvider.GetInstanceType()); instanceProvider.FillInstance(instance); } else { instance = existingInstance.NewInstance("Behavior"); } if (null != instance) { instance.SetProperty(AdministrationStrings.Type, behavior.GetType().FullName); } }
public DelegatingFormatterBehavior(EndpointAddress address, IOperationBehavior innerFormatterBehavior) { this.endpointAddress = address; this.innerFormatterBehavior = innerFormatterBehavior; }
private static void TryGetSurrogateBehavior(OperationDescription operationDescription, ref IOperationBehavior original, ref IOperationBehavior surrogate) { if (!IsUntypedMessage(operationDescription.Messages[0]) && operationDescription.Messages[0].Body.Parts.Count != 0) { var webGetAttribute = operationDescription.Behaviors.Find <WebGetAttribute>(); if (webGetAttribute != null) { original = webGetAttribute; surrogate = new WebInvokeAttribute { BodyStyle = webGetAttribute.BodyStyle, Method = "NONE", RequestFormat = webGetAttribute.RequestFormat, ResponseFormat = webGetAttribute.ResponseFormat, UriTemplate = webGetAttribute.UriTemplate }; } else { var webInvokeAttribute = operationDescription.Behaviors.Find <WebInvokeAttribute>(); if (webInvokeAttribute != null && webInvokeAttribute.Method == "GET") { original = webInvokeAttribute; surrogate = new WebInvokeAttribute { BodyStyle = webInvokeAttribute.BodyStyle, Method = "NONE", RequestFormat = webInvokeAttribute.RequestFormat, ResponseFormat = webInvokeAttribute.ResponseFormat, UriTemplate = webInvokeAttribute.UriTemplate }; } } } }
/// <summary> /// Add an operation behavior to the description /// </summary> public void AddOperationBehavior(IOperationBehavior behavior) { this.m_operationBehaviors.Add(behavior); }