मैं अपनी क्वेरीस्ट्रिंग में एक यूटीसी तिथि भेज रहा हूं, उदा।WebApi querystring पैरामीटर बाध्यकारी कैसे UTC तिथियां रखने के लिए?
& EndDate = 2000-01-02T03% 3a04% 3a05.0060000Z
और मेरे नियंत्रक पैरामीटर एक जटिल वस्तु है, उदा यह बांधता
public async Task<DocumentsRequest> GetEchoFromUriDocumentsAsync(
[FromUri] DocumentsRequest request)
{
return request;
}
जो मैंने समझने में कामयाब रहा है वह है कि पैरामीटर बाध्यकारी के बाद मेरी वस्तु, मेरी यूटीसी तिथि को स्थानीय दिनांक + ऑफसेट में बदल देती है। यहाँ मेरी परीक्षण मामले का एक टुकड़ा है
[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
लेकिन , जेसन सीरियलाइजेशन ऑफसेट को छोटा कर देता है और मानता है कि यह यूटीसी तिथि है ... और जैसा कि आप देख सकते हैं, तिथियां पोस्ट-राउंड-ट्रिप से मेल नहीं खाती हैं।
वहाँ एक समान प्रश्न यहाँ है, लेकिन वास्तव में नहीं एक जवाब (पोस्टर जवाब ही सवाल है)
Passing UTC DateTime to Web API HttpGet Method results in local time
इस समस्या को हल करने के लिए सही समाधान क्या है? मुझे लगता है कि मुद्दा यह है कि मैं यूआरसी के रूप में क्वेरीस्ट्रिंग को पार्स करने के लिए बाध्यकारी पैरामीटर चाहता हूं। टाइप कनवर्टर जाने का रास्ता है? किसी के पास यह कैसे करना है इसका पूरा नमूना है? क्या मुझे डेटटाइम के साथ अपने सभी वर्गों पर सभी विशेषताओं पर TypeConverter का उपयोग करना होगा? मैं एक वैश्विक विन्यास की उम्मीद कर रहा था।
धन्यवाद।
मुझे पता चला कि आपके द्वारा लिंक किया गया एक अच्छा जवाब है (जो आपके प्रश्न से पहले बनाया गया था, लेकिन टी के बावजूद स्वीकृत उत्तर के रूप में चिह्नित नहीं किया गया था इस दौरान वह सबसे अधिक वोट): http://stackoverflow.com/a/24899562/125407 –
संभावित डुप्लिकेट [वेब एपीआई दिनांक यूटीपी डेटटाइम को वेब एपीआई एचटीपीजीट विधि के परिणाम स्थानीय समय में परिणाम] (http: // stackoverflow।कॉम/प्रश्न/22581138/पासिंग-यूटीसी-डेटाटाइम-टू-वेब-एपीआई-httpget-method-results-in-local-time) –