Click here to Skip to main content
15,891,423 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
a)create a method public string GetData(inputParameters value)
b)created parameter inspector that is working fine.
c) when control goes from BeforeCall() method to GetData(inputParameters ) , inputParameters value is null in GetData method , how can i get parameter value here ? plese suggest asap.




1. created a method to intercept its parameters.
C#
        [CustomDataOperationBehavior]
       [WebInvoke(Method="POST", UriTemplate = "GetData",RequestFormat=WebMessageFormat.Json ,ResponseFormat =  WebMessageFormat.Json)]
       [OperationContract]
       string GetData(inputParameters value);


public string GetData(inputParameters value)
       {
           return value.Name;
       }

2.
C#
public class ParameterValidator : IParameterInspector
    {

        public object BeforeCall(string operationName, object[] inputs)
        {
            if (((IntercepterDemo.inputParameters)(inputs[0])).Name == "Test")
            {
                return null;
                // return inputs
            }
            else
            {
                throw new FaultException("Fail");
            }            
        }

        public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
        {
        }
    }

3.
C#
public class CustomDataOperationBehavior : Attribute, IOperationBehavior
    {
        public void ApplyDispatchBehavior(OperationDescription operationDescription, System.ServiceModel.Dispatcher.DispatchOperation dispatchOperation)
        {
            dispatchOperation.ParameterInspectors.Add(new ParameterValidator());
        }

        public void AddBindingParameters(OperationDescription operationDescription, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
        {
        }

        public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation)
        {           
        }
        public void Validate(OperationDescription operationDescription)
        {
        }

    }

4.
C#
[DataContract]
    public class MyExceptionContainer
    {
        [DataMember]
        public string Messsage { get; set; }
        [DataMember]
        public string Description { get; set; }
    }
Posted
Updated 21-Dec-15 2:05am
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900