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