Question

Lorsque je publie un objet JSON avec une propriété Date à un apiController, il ne désérialiser pas à une date.

Code du site du serveur:

public class MegaTestController : ApiController
{
    // POST /megatest
    public void Post(ttt value)
    {
        string sdf = "!sad";
    }
}

public class ttt
{
    public DateTime Date { get; set; }
    public string Name { get; set; }
}

Ensuite, je fais une demande de poste avec Fiddler

PUBLIER http: // localhost: 62990 / megatest Http / 1.1

Utilisateur-agent: Fiddler

Hôte: localhost: 62990

Type de contenu: texte / json

Longueur du contenu: 54

{"Date": "/ Date (1239018869048) /", "name": "mec"}

Mais l'objet qui arrive n'a que le Name Ensemble de propriétés, le Date la propriété est {01.01.0001 00:00:00}

Est-ce que je manque des en-têtes ou des paramètres de projet?


Éditer: Les demandes proviennent réellement d'un HttpClient. Est-il possible de formater la date avant d'envoyer la demande avec HttpClient?

public Task<T> Create<T>(T item)
{
    var service = new HttpClient();
    service.BaseAddress = new Uri("http://localhost:62990");

    var method = typeof(T).Name + "s"; // in this case it will be ttts

    var req = new HttpRequestMessage<T>(item);
    req.Content.Headers.ContentType = new MediaTypeHeaderValue("text/json");

    return service.PostAsync(method, req.Content).ContinueWith((reslutTask) =>
    {
        return reslutTask.Result.Content.ReadAsAsync<T>();
    }).Unwrap();
}

var data = new ttt { Name = "Dude", Date = DateTime.Now };
Create(data);

Éditer: Ceci est un bug connu avec l'ASP MVC 4 Beta et la version finale d'ASP MVC 4 utilisera Json.net En tant que sérialiseur JSON jusque-là, vous pouvez utiliser le sérialiseur XML par défaut ou changer le sérialiseur JSON par défaut pour Json.net. Plus d'informations peuvent être trouvées sur Blog Hanselman

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top