Beispiel #1
0
 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     dispatchOperation.Invoker = new ExceptionTranslator(dispatchOperation.Invoker, this);
 }
Beispiel #2
0
 void IOperationBehavior.ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
 }
 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     dispatchOperation.Invoker = new CacheExtension(dispatchOperation.Invoker);
 }
Beispiel #4
0
 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     dispatchOperation.ParameterInspectors.Add(new MyParameterInspector(this.pattern, this.message));
 }
 void IOperationBehavior.ApplyDispatchBehavior(OperationDescription operation, DispatchOperation service)
 {
     // "it is a passive operation behavior"
 }
        public virtual void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
        {
            // chain invokers.
            IOperationInvoker oldInvoker = dispatchOperation.Invoker;

            dispatchOperation.Invoker = CreateInvoker(oldInvoker, operationDescription, dispatchOperation);
        }
Beispiel #7
0
 protected virtual void OnContractServiceOperation(DispatchOperation operation)
 {
 }
Beispiel #8
0
 void IOperationBehavior.ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     this.AddQueryComposer(dispatchOperation, operationDescription, true);
 }
Beispiel #9
0
        private void AddQueryComposer(DispatchOperation dispatchOperation, OperationDescription operationDescription, bool isAttributeSetOnOperation)
        {
            // QueryComposer is added for 2-way operations when the returnType is IEnumerable, IEnumerable<>, IQueryable or IQueryable<>
            // if enabled and the user did not specify the queryComposerType, add the UrlQueryComposerType
            if (dispatchOperation.IsOneWay)
            {
                if (isAttributeSetOnOperation && this.enabled)
                {
                    // throw if the QueryCompositionAttribute was set on the Operation
                    throw new InvalidOperationException(String.Format(
                                                            CultureInfo.InvariantCulture,
                                                            "QueryComposition attribute was set on one-way operation {0}. Please remove this attribute from this operation.",
                                                            dispatchOperation.Name));
                }

                return;
            }
            else
            {
                // Verify if the returnType type is IEnumerable, IEnumerable<>, IQueryable or IQueryable<>
                bool isQueryCompositionSupportedOnReturnType = false;
                Type returnType = null;
                if (operationDescription.Messages[1] != null && operationDescription.Messages[1].Body != null && operationDescription.Messages[1].Body.ReturnValue != null)
                {
                    returnType = operationDescription.Messages[1].Body.ReturnValue.Type;
                    if (returnType != null)
                    {
                        if (returnType == EnumerableType)
                        {
                            isQueryCompositionSupportedOnReturnType = true;
                        }
                        else if (returnType.IsGenericType)
                        {
                            Type genericTypeDefinition = returnType.GetGenericTypeDefinition();
                            if (genericTypeDefinition == GenericEnumerableType)
                            {
                                isQueryCompositionSupportedOnReturnType = true;
                            }
                        }
                    }
                }

                // if the returnType is not IEnumerable, IEnumerable<>, we don't set the QueryComposer
                if (!isQueryCompositionSupportedOnReturnType)
                {
                    // throw if the QueryCompositionAttribute was set on the Operation
                    if (isAttributeSetOnOperation && this.enabled)
                    {
                        throw new InvalidOperationException(
                                  String.Format(
                                      CultureInfo.InvariantCulture,
                                      "QueryComposition attribute was set on operation {0}, but the return type is not defined as IEnumerable. Please remove this attribute from this operation or change the operation return type to IEnumerable",
                                      dispatchOperation.Name));
                    }

                    return;
                }

                if (this.enabled)
                {
                    IQueryComposer queryComposer = null;
                    if (this.queryComposerType == null)
                    {
                        queryComposer = new UrlQueryComposer();
                    }
                    else
                    {
                        queryComposer = (IQueryComposer)Activator.CreateInstance(this.queryComposerType);
                    }

                    dispatchOperation.Invoker = new QueryCompositionOperationInvoker(dispatchOperation.Invoker, queryComposer);
                }
            }
        }
Beispiel #10
0
 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     Console.WriteLine("IOperationBehavior - ApplyDispatchBehavior " + _host.ChannelDispatchers.Count);
     _state.CurrentStage += ", IOperationBehavior.ApplyDispatchBehavior";
 }
Beispiel #11
0
 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     //dispatchOperation.Parent.MessageInspectors.Add(new MessageInspector());
 }
 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     dispatchOperation.Invoker = new ErrorLoggingOperationInvokerFacade(dispatchOperation.Invoker, WcfDependencyManager.ResolveLogger());
 }
Beispiel #13
0
 // Implements a modification or extension of the service across an operation
 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     // This method does not get called client side.
 }
 void IOperationBehavior.ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     //throw new NotImplementedException();
 }
 protected override InvokerBase CreateInvoker(IOperationInvoker oldInvoker, OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     return(new ResponseExceptionInvoker(oldInvoker, operationDescription));
 }
 public void ApplyDispatchBehavior(OperationDescription description, DispatchOperation dispatch)
 {
     dispatch.Invoker = new OperationCachingInvoker(dispatch.Action, dispatch.Invoker);
 }
 protected abstract InvokerBase CreateInvoker(IOperationInvoker oldInvoker, OperationDescription operationDescription, DispatchOperation dispatchOperation);
        public void ApplyDispatchBehavior(OperationDescription description, DispatchOperation dispatch)
        {
            DataContractSerializerOperationBehavior dataContractSerializerOperationBehavior = description.Behaviors.Find <DataContractSerializerOperationBehavior>();

            dataContractSerializerOperationBehavior.DataContractResolver = new ProxyDataContractResolver();
        }
Beispiel #19
0
        void IOperationBehavior.ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
        {
            IOperationBehavior innerBehavior = new ProtoOperationBehavior(operationDescription);

            innerBehavior.ApplyDispatchBehavior(operationDescription, dispatchOperation);
        }
Beispiel #20
0
 public void ApplyDispatchBehavior(OperationDescription description, DispatchOperation dispatch)
 {
     dispatch.ParameterInspectors.Add(new ParameterValidatorBehavior(ThrowErrorOnFirstError, ThrowErrorAfterValidation));
 }
Beispiel #21
0
 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
 }
Beispiel #22
0
 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     ServiceName = dispatchOperation.Parent.Type.Name;
     dispatchOperation.ParameterInspectors.Add(this);
 }
Beispiel #23
0
        public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
        {
            IOperationInvoker baseInvoker = dispatchOperation.Invoker;

            dispatchOperation.Invoker = new EGOperationInvoker(baseInvoker, operationDescription);
        }
Beispiel #24
0
        /// <summary>
        /// 添加服务端自定义扩展对象
        /// </summary>
        /// <param name="operationDescription"></param>
        /// <param name="dispatchOperation"></param>
        public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
        {
            IOperationInvoker originInvoker = dispatchOperation.Invoker;

            dispatchOperation.Invoker = new InvokeExceptionDecorator(originInvoker);
        }
 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     dispatchOperation.Invoker = new PreflightOperationInvoker(operationDescription.Messages[1].Action, this.allowedMethods);
 }
Beispiel #26
0
 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     dispatchOperation.Formatter = new ResponseJsonFormatter(operationDescription, dispatchOperation.Formatter);
 }
 /// <summary>在操作范围内执行服务的修改或扩展。</summary>
 /// <param name="operationDescription">正在检查的操作。 仅用于检查。 如果修改了操作说明,则结果将不确定。</param>
 /// <param name="dispatchOperation">公开 <paramref name="operationDescription" /> 所描述的操作的自定义属性的运行时对象。</param>
 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     dispatchOperation.ParameterInspectors.Add(new CustomParameterInspector());
 }
Beispiel #28
0
 /// <summary>
 /// Apply the dispatch behavior.
 /// </summary>
 /// <param name="operationDescription">The operation description.</param>
 /// <param name="dispatchOperation">The dispatch description.</param>
 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     dispatchOperation.Formatter = new WcfMessageDispatchFormatter <IAmiContract>(operationDescription);
 }
Beispiel #29
0
 /// <summary>
 /// Implements a modification or extension of the service across an operation.
 /// </summary>
 /// <param name="description">
 ///     The operation being examined. Use for examination only. If the operation
 ///     description is modified, the results are undefined.
 /// </param>
 /// <param name="dispatch">
 ///     The run-time object that exposes customization properties for the operation
 ///     described by operationDescription.
 /// </param>
 public void ApplyDispatchBehavior(OperationDescription description, DispatchOperation dispatch)
 {
     ReplaceDataContractSerializerOperationBehavior(description);
 }
Beispiel #30
0
 /// <summary>
 /// Apply the dispatch behavior
 /// </summary>
 /// <param name="operationDescription"></param>
 /// <param name="dispatchOperation"></param>
 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
 {
     dispatchOperation.Formatter = new FhirMessageDispatchFormatter(operationDescription);
 }