내 쿼리 문자열에 UTC 날짜 (예 :WebApi querystring 매개 변수 바인딩을 유지하는 방법은 UTC 날짜를 유지합니까?
그리고 내 제어기 파라미터는 복잡한 객체, 예를 들어에 바인드& 종료 날짜 = 2000-01-02T03 % 3a04 % 3a05.0060000Z
public async Task<DocumentsRequest> GetEchoFromUriDocumentsAsync(
[FromUri] DocumentsRequest request)
{
return request;
}
매개 변수 바인딩 후 내 개체가 내 UTC 날짜를 로컬 날짜 + 오프셋으로 변경한다는 점을 알아 냈습니다. 여기 내 테스트 케이스의 조각이
[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);
}
다음은 출력이기 때문에 위의 실패 :
2000-01-01T19 : 04 : 05.006-08 : 00
그러나 json serialization은 오프셋을 잘라 버리고 UTC 날짜라고 가정합니다 ... 그리고 알 수 있듯이 날짜는 post-round-trip과 일치하지 않습니다.
이 비슷한 질문이 여기에있다,하지만 정말 대답 (대답 포스터가 자신의 질문은)
Passing UTC DateTime to Web API HttpGet Method results in local time
이 문제를 해결하려면 올바른 해결책은 무엇인가 ? 문제는 매개 변수 바인딩이 쿼리 문자열을 UTC로 구문 분석하도록하려는 것입니다. TypeConverter가는 길입니까? 누구든지 그 방법에 대한 완전한 견본을 가지고 있습니까? DateTime과 함께 모든 클래스의 모든 특성에 TypeConverter를 사용해야합니까? 전 세계적으로 일종의 구성을 원했습니다.
감사합니다.
내가 링크 된 질문에 답을 얻은 적이 있습니다. (질문 전에 작성되었지만 나타 났지만 답이 표시되지 않았습니다. 그는 그 사이에 대부분 투표) : http://stackoverflow.com/a/24899562/125407 –
가능한 복제본 [UTC DateTime을 Web API에 전달하면 HttpGet Method는 현지 시간으로 결과를 얻습니다.] (http : // stackoverflow.com/questions/22581138/passing-utc-datetime-to-web-api-httpget-method-results-in-local-time) –