Cómo pasar un objeto TimeSpan a un método WCF usando JSON

Estoy tratando de encontrar una manera de llamar a un método WCF usando JSON y pasar un TimeSpan como parámetro, pero siempre recibo una respuesta de "Solicitud incorrecta" del servicio.

Aquí hay una interfaz de servicio de código de fragmento:

 [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
    TimeSpan GetTimeSpan(TimeSpan value);

Llamada de servicio

  String method = "GetTimeSpan";
  String result = null;

  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + method);
  request.KeepAlive = false;
  request.Method = WebRequestMethods.Http.Post;
  request.ContentType = "application/json";

  JsonSerializer serializer = new JsonSerializer();

  TimeSpan ts = new TimeSpan(23, 59, 59);
  String jsonString = JsonConvert.SerializeObject(ts);


  String data = jsonString;      //jsonString = "23:59:59"
  //I have already tryed with {"value": "23:59:59"} and the result is the same, bad request.
  request.ContentLength = data.Length;

  StreamWriter writer = new StreamWriter(request.GetRequestStream());
  writer.Write(data);
  writer.Close();

  WebResponse response = request.GetResponse();
  StreamReader reader = new StreamReader(response.GetResponseStream());
  result = reader.ReadToEnd();
  response.Close();

Esto es solo un ejemplo. Al llamar a un servicio sin TimeSpan, todo funciona bien. Necesito ponerlo en funcionamiento para mantener la compatibilidad con otros clientes que consumen el servicio de la manera típica.

Respuesta

l servidor remoto devolvió un error: (400) Solicitud incorrecta.

¿Estoy pasando la representación incorrecta de TimeSpan json? ¿O hay una manera de definir cómo deserializar el TimeSpan cuando el servicio maneja la solicitud?

Gracias por adelantad

Respuestas a la pregunta(2)

Su respuesta a la pregunta