Tôi đang gửi chuỗi truy vấn của mình vào ngày UTC, ví dụ:Làm thế nào để có tham số chuỗi truy vấn WebApi giữ ngày UTC?
& EndDate = 2000-01-02T03% 3a04% 3a05.0060000Z
Và thông số điều khiển của tôi liên kết với nó trong một đối tượng phức tạp, ví dụ
public async Task<DocumentsRequest> GetEchoFromUriDocumentsAsync(
[FromUri] DocumentsRequest request)
{
return request;
}
Điều tôi đã tìm hiểu là đối tượng của tôi sau khi ràng buộc tham số, thay đổi ngày UTC thành ngày bù trừ + ngày địa phương. Dưới đây là một đoạn trường hợp thử nghiệm của tôi
[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);
}
Trên đây là thất bại vì đầu ra là:
2000-01-01T19: 04: 05.006-08: 00
Nhưng , tuần tự json sau đó cắt ngắn bù đắp và giả định nó là ngày UTC ... và như bạn có thể thấy, những ngày không phù hợp lên sau chuyến đi vòng.
Có một câu hỏi tương tự ở đây, nhưng không thực sự là một câu trả lời (các poster đã trả lời là câu hỏi của riêng)
Passing UTC DateTime to Web API HttpGet Method results in local time
giải pháp đúng để giải quyết vấn đề này là gì? Tôi nghĩ rằng vấn đề là tôi muốn tham số ràng buộc để phân tích chuỗi truy vấn như UTC một ngày. Có phải TypeConverter là con đường để đi? Bất cứ ai có một mẫu hoàn chỉnh làm thế nào để làm điều đó? Tôi có phải sử dụng TypeConverter trên tất cả các thuộc tính trên tất cả các lớp của tôi với DateTime không? Tôi đã hy vọng cho một cấu hình toàn cầu của các loại.
Cảm ơn.
Tôi đã tìm thấy câu hỏi bạn đã liên kết có câu trả lời hay (xuất hiện trước khi bạn đặt câu hỏi nhưng không được đánh dấu là câu trả lời được chấp nhận mặc dù có hầu hết các phiếu bầu trong thời gian chờ đợi): http://stackoverflow.com/a/24899562/125407 –
có thể trùng lặp của [Chuyển UTC DateTime thành Web API HttpGet Phương thức kết quả theo giờ địa phương] (http: // stackoverflow.com/questions/22581138/passing-utc-datetime-to-web-api-httpget-method-results-in-local-time) –