Служебная программа datetime deserialization отлично работает на моей локальной машине с датским языком/регионом, но на сервере производства она не работает, потому что она имеет английскую культуру.
Как заставить его игнорировать текущую культуру?
Это работает локально: ourdomain.dk/api/json/reply/LoadGuardBookView?date=24/07/2014
Это работает на производстве: ourdomain.dk/api/json/reply/LoadGuardBookView?date=07/24/2014
Различные цветовые форматы. Как заставить его работать как с тем же кодом?
Вызов из javascript, поэтому у меня нет культуры под рукой.
Изменить 1:
var date = $.datepicker.formatDate("d/m/yy", $("#calendar").datepicker("getDate"));
$.get("/api/json/reply/LoadGuardBookView", {
Date: date
}, function (data) {
...
}).fail(function (e) {
...
console.log("Error reloading GuardBook");
});
Сервер:
public class GuardBookService : Service, IGet<LoadGuardBookView>
{
public object Get(LoadGuardBookView request)
{
...
}
public class LoadGuardBookView
{
public DateTime Date { get; set; }
}
}
Исключение:
{"ResponseStatus": {"ErrorCode": "SerializationException", "Сообщение": "Не удалось выполнить десериализацию" *.LoadGuardBookView 'с использованием KeyValueDataContractDeserializer:' date = 24-07-2014 '.\NError:' System.Runtime.Serialization.SerializationException: KeyValueDataContractDeserializer: преобразование ошибки в тип: String не была признана допустимым DateTime. ---> System.FormatException: String не была признана допустимым DateTime.\R\n в System.DateTime.Parse(String s, Поставщик IFormatProvider, стили DateTimeStyles)\r\n в ServiceStack.Text.Common.DateTimeSerializer.ParseShortestXsdDateTime(String dateTimeStr)\r\n в ServiceStack.Text.Common.DeserializeBuiltin
1.<GetParseFn>b__b(String value)\r\n at ServiceStack.ServiceModel.Serialization.StringMapTypeDeserializer.PopulateFromMap(Object instance, IDictionary
2 keyValuePairs, List1 ignoredWarningsOnPropertyNames)\r\n --- End of inner exception stack trace ---\r\n at ServiceStack.ServiceModel.Serialization.StringMapTypeDeserializer.PopulateFromMap(Object instance, IDictionary
1 ignoredWarningsOnPropertyNames)\r\n --- End of inner exception stack trace ---\r\n at ServiceStack.ServiceModel.Serialization.StringMapTypeDeserializer.PopulateFromMap(Object instance, IDictionary
2 keyValuePairs, List1 ignoredWarningsOnPropertyNames)\r\n at ServiceStack.ServiceModel.Serialization.KeyValueDataContractDeserializer.Parse(IDictionary
2 keyValuePairs, Type returnType)\r\n в ServiceStack.WebHost.Endpoints.Support.EndpointHandlerBase.DeserializeHttpRequest (Тип operationType, IHttpRequest httpReq, String contentType) '"}}
Я нашел обходное решение, которое работает как на местном, так и на производстве:
ourdomain.dk/api/json/reply/LoadGuardBookView?date=2014-07-24
Изменение: как говорится в комментариях - это способ сделать это. (ГГГГ-ММ-ДД)