public void HandleServiceCall(string serviceName, string contentType, TextReader input, TextWriter output)
        {
            JsonSerializer ser = new JsonSerializer();

            ser.TypeNameHandling = TypeNameHandling.Objects;
            object request = null;
            object resp    = null;

            if (!string.IsNullOrEmpty(serviceName))
            {
                var si = _serviceDispatcher.GetServiceInfo(serviceName);
                request = ser.Deserialize(input, si.RequestType);
                resp    = _serviceDispatcher.CallService(serviceName, request);
            }
            else
            {
                request = ser.Deserialize(new JsonTextReader(input));
                resp    = _serviceDispatcher.CallService(request);
            }
            ser.Serialize(output, resp);
        }
 public object CallService(string serviceName, object request, Type responseType)
 {
     ServiceCallContext.Current = new ServiceCallContext
     {
         Headers = _h,
         User    = System.Threading.Thread.CurrentPrincipal
     };
     try
     {
         return(_dispatcher.CallService(serviceName, request));
     }
     finally
     {
         ServiceCallContext.Current = null;
     }
 }