Servicestack请求日期时间反序列化 - 如何使其忽略当前文化?

时间:2014-07-24 16:49:59

标签: c# .net datetime servicestack deserialization

Servicestack请求datetime反序列化在我的本地机器上使用丹麦语/区域正常工作 - 但在生产服务器上它不起作用,因为它具有英语文化。

如何让它忽略当前的文化?

这适用于本地: 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”:{ “错误码”: “SerializationException”, “消息”:“可能   不使用反序列化'* .LoadGuardBookView'请求   KeyValueDataContractDeserializer:'date = 24-07-2014'。\ n错误:   “System.Runtime.Serialization.SerializationException:   KeyValueDataContractDeserializer:转换为类型时出错:String is   未被识别为有效的DateTime。 ---&GT; System.FormatException:   字符串未被识别为有效的DateTime。\ r \ n at   System.DateTime.Parse(String s,IFormatProvider提供程序,   DateTimeStyles样式)\ r \ n at   ServiceStack.Text.Common.DateTimeSerializer.ParseShortestXsdDateTime(字符串   dateTimeStr)\ r \ n at   ServiceStack.Text.Common.DeserializeBuiltin 1.<GetParseFn>b__b(String value)\r\n at ServiceStack.ServiceModel.Serialization.StringMapTypeDeserializer.PopulateFromMap(Object instance, IDictionary 2 keyValuePairs,List 1 ignoredWarningsOnPropertyNames)\r\n --- End of inner exception stack trace ---\r\n at ServiceStack.ServiceModel.Serialization.StringMapTypeDeserializer.PopulateFromMap(Object instance, IDictionary 2 keyValuePairs,List 1 ignoredWarningsOnPropertyNames)\r\n at ServiceStack.ServiceModel.Serialization.KeyValueDataContractDeserializer.Parse(IDictionary 2   keyValuePairs,Type returnType)\ r \ n at   ServiceStack.WebHost.Endpoints.Support.EndpointHandlerBase.DeserializeHttpRequest(类型   operationType,IHttpRequest httpReq,String contentType)'“}}

1 个答案:

答案 0 :(得分:0)

我找到了适用于本地和生产的解决方法:

  

ourdomain.dk/api/json/reply/LoadGuardBookView?date=2014-07-24

编辑:正如评论所述 - 这是做到这一点的方法。 (YYYY-MM-DD)