/// <summary>
        /// Provides the ability to change run-time property values or insert custom extension objects such as error handlers, message or parameter interceptors, security extensions, and other custom extension objects.
        /// </summary>
        /// <param name="serviceDescription">The service description.</param>
        /// <param name="serviceHostBase">The host that is currently being built.</param>
        public virtual void ApplyDispatchBehavior(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
        {
            this.OnProcessDispatchBehavior(serviceDescription, serviceHostBase);

            foreach (ChannelDispatcher cd in serviceHostBase.ChannelDispatchers)
            {
                // on each channel dispatcher
                this.OnIterateChannelDispatcher(cd);

                foreach (EndpointDispatcher ep in cd.Endpoints)
                {
                    // Action Filter
                    MessageFilter actionFilter = this.CreateActionFilter(ep);
                    if (actionFilter != null)
                    {
                        ep.ContractFilter = actionFilter;
                    }

                    // Operation Selector
                    IDispatchOperationSelector operationSelector = this.CreateOperationSelector(ep);
                    if (operationSelector != null)
                    {
                        ep.DispatchRuntime.OperationSelector = operationSelector;
                    }

                    // on each endpoint dispatcher
                    this.OnIterateEndpointDispatcher(ep);
                }
            }
        }
Exemple #2
0
 static string GetOperationName(Uri address, IDispatchOperationSelector operationSelector)
 {
     Message message = Message.CreateMessage(MessageVersion.None, "");
     message.Headers.To = address;
     HttpRequestMessageProperty messageProperty = new HttpRequestMessageProperty();
     messageProperty.Method = "GET";
     message.Properties.Add(HttpRequestMessageProperty.Name, messageProperty);
     return operationSelector.SelectOperation(ref message);
 }
Exemple #3
0
        static string  GetOperationName(Uri address, IDispatchOperationSelector operationSelector)
        {
            Message message = Message.CreateMessage(MessageVersion.None, "");

            message.Headers.To = address;
            HttpRequestMessageProperty messageProperty = new HttpRequestMessageProperty();

            messageProperty.Method = "GET";
            message.Properties.Add(HttpRequestMessageProperty.Name, messageProperty);
            return(operationSelector.SelectOperation(ref message));
        }
 internal CustomDemuxer(IDispatchOperationSelector selector)
 {
     this.selector = selector;
     this.map = new Dictionary<string, DispatchOperationRuntime>();
 }
 public RestServiceOperationSelector(IDispatchOperationSelector endpoint)
 {
     m_Operation = endpoint;
 }
 internal CustomDemuxer(IDispatchOperationSelector selector)
 {
     _selector = selector;
     _map      = new Dictionary <string, DispatchOperationRuntime>();
 }
 public RestServiceOperationSelector(IDispatchOperationSelector endpoint)
 {
     m_Operation = endpoint;
 }
 public HttpOverrideOperationSelector(IDispatchOperationSelector originalSelector)
 {
     this.originalSelector = originalSelector;
 }
Exemple #9
0
        void IServiceBehavior.ApplyDispatchBehavior(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
        {
            ModuleProc PROC = new ModuleProc(this.DYN_MODULE_NAME, "WcfCustomBehaviorBase");

            try
            {
                // on process the service description
                this.OnServiceDispatchBehavior(serviceDescription, serviceHostBase);

                // on each service endpoints
                this.OnIterateServiceEndpoints(serviceDescription);

                // dispatchers
                foreach (ChannelDispatcher cd in serviceHostBase.ChannelDispatchers)
                {
                    // on each channel dispatcher
                    this.OnIterateChannelDispatcher(cd);

                    // Error handlers
                    IErrorHandler[] errorHandlers = this.CreateErrorHandlers(cd);
                    if (errorHandlers != null)
                    {
                        foreach (var errorHandler in errorHandlers)
                        {
                            Log.Info(PROC, "(" + cd.BindingName + ") Error Handler Added : " + errorHandler.ToString());
                            cd.ErrorHandlers.Add(errorHandler);
                        }
                    }

                    // on each endpoint dispatcher
                    foreach (EndpointDispatcher ep in cd.Endpoints)
                    {
                        // Contract Filter (Action)
                        MessageFilter contractFilter = this.CreateContractFilter(ep);
                        if (contractFilter != null)
                        {
                            Log.Info(PROC, "(" + ep.EndpointAddress.ToString() + ") Contract Filter Added : " + contractFilter.ToString());
                            ep.ContractFilter = contractFilter;
                        }

                        // Address Filter (To)
                        MessageFilter addressFilter = this.CreateAddressFilter(ep);
                        if (addressFilter != null)
                        {
                            Log.Info(PROC, "(" + ep.EndpointAddress.ToString() + ") Address Filter Added : " + addressFilter.ToString());
                            ep.AddressFilter = addressFilter;
                        }

                        // Operation Selector
                        IDispatchOperationSelector operationSelector = this.CreateOperationSelector(ep, ep.DispatchRuntime.OperationSelector);
                        if (operationSelector != null)
                        {
                            Log.Info(PROC, "(" + ep.EndpointAddress.ToString() + ") Operation Selector Added : " + operationSelector.ToString());
                            ep.DispatchRuntime.OperationSelector = operationSelector;
                        }

                        // on each endpoint dispatcher
                        this.OnIterateEndpointDispatcher(ep);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Exception(PROC, ex);
            }
        }
Exemple #10
0
 protected virtual IDispatchOperationSelector CreateOperationSelector(EndpointDispatcher dispatcher, IDispatchOperationSelector oldOperationSelector)
 {
     return(null);
 }
Exemple #11
0
 public HttpOverrideOperationSelector(IDispatchOperationSelector originalSelector)
 {
     this.originalSelector = originalSelector;
 }