Wysyłam moje zapytanie o datę UTC, np.Jak ustawić powiązanie parametrów WebApi, aby zachować daty UTC?
& DataZakończenia = 2000-01-02T03% 3a04% 3a05.0060000Z
i moje Parametry regulatora wiąże się w złożonym obiektu, np
public async Task<DocumentsRequest> GetEchoFromUriDocumentsAsync(
[FromUri] DocumentsRequest request)
{
return request;
}
Udało mi się ustalić, że mój obiekt po powiązaniu parametrów zmienia datę UTC na lokalną datę + przesunięcie. Oto fragment mojego przypadku testowego
[TestMethod]
public void Should_generate_querystring_and_parameter_bind_correctly()
{
DocumentsRequest request = DocumentRequestBuilder.DocumentsRequest();
string queryString = ReflectionQueryStringConverter.ToQueryString(request);
string baseUrl = "http://baseUrl/Test/EchoFromUriDocuments";
string uri = baseUrl + queryString;
HttpResponseMessage response = _client.GetAsync(uri).Result;
string outputString = response.Content.ReadAsStringAsync().Result;
JsonSerializer<DocumentsRequest> serializer =
new JsonSerializer<DocumentsRequest>();
DocumentsRequest output = serializer.DeserializeFromString(outputString);
output.EndDate.Should().Be(request.EndDate);
}
Powyższy się niepowodzeniem, ponieważ wyjście jest:
2000-01-01T19: 04: 05.006-08: 00
Ale , serializacja json następnie obcina offset i zakłada, że jest data UTC ... i jak widać, daty nie pasują do potoku po podróży.
Jest tu podobne pytanie, ale naprawdę nie odpowiedź (plakat odpowiedział ma własne pytanie)
Passing UTC DateTime to Web API HttpGet Method results in local time
Jaki jest prawidłowe rozwiązanie, aby rozwiązać ten problem? Myślę, że problem polega na tym, że chcę, aby powiązanie parametrów przeanalizowało querystring jako datę UTC. Czy TypeConverter jest drogą? Ktoś ma pełną próbkę tego, jak to zrobić? Czy musiałbym używać TypeConverter we wszystkich atrybutach na wszystkich moich zajęciach z DateTime? Miałem nadzieję na globalną konfigurację.
Dzięki.
Znalazłem pytanie, które połączyłeś, ma dobrą odpowiedź (która pojawi się została utworzona przed Twoim pytaniem, ale nie została oznaczona jako zaakceptowana odpowiedź mimo on ma najwięcej głosów w międzyczasie): http://stackoverflow.com/a/24899562/125407 –
możliwy duplikat [Przechodzenie UTC DateTime do Web API HttpGet Metoda wyniki w czasie lokalnym] (http: // stackoverflow.com/questions/22581138/passing-utc-datetime-to-web-api-httpget-method-results-in-local-time) –