C# Servicestack请求日期时间反序列化-如何使其忽略当前区域性?
Servicestack request datetime反序列化在我的本地机器上(使用丹麦语/地区)运行良好,但在生产服务器上不起作用,因为它具有英语文化 如何使其忽略当前文化? 这在当地起作用: ourdomain.dk/api/json/reply/LoadGuardBookView?日期=2014年7月24日 这在生产上起作用: ourdomain.dk/api/json/reply/LoadGuardBookView?日期=2014年7月24日 不同的文化数据格式。如何使用相同的代码使其在两者上工作?C# Servicestack请求日期时间反序列化-如何使其忽略当前区域性?,c#,.net,datetime,
servicestack,deserialization,C#,.net,Datetime,
servicestack,Deserialization,Servicestack request datetime反序列化在我的本地机器上(使用丹麦语/地区)运行良好,但在生产服务器上不起作用,因为它具有英语文化 如何使其忽略当前文化? 这在当地起作用: ourdomain.dk/api/json/reply/LoadGuardBookView?日期=2014年7月24日 这在生产上起作用: ourdomain.dk/api/json/reply/LoadGuardBookView?日期=2014年7月24日 不同的文化数据格式。如何使用相同的代码使
调用来自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; }
}
}
公共类GuardBookService:服务,IGet
{
公共对象获取(LoadGuardBookView请求)
{
...
}
公共类LoadGuardBookView
{
公共日期时间日期{get;set;}
}
}
例外情况:
{“ResponseStatus”:{“ErrorCode”:“SerializationException”,“Message”:“可能”
未使用反序列化“*.LoadGuardBookView”请求
KeyValueDataContractDeserializer:“日期=24-07-2014”。\n错误:
'System.Runtime.Serialization.SerializationException:
KeyValueDataContractDeserializer:转换为类型时出错:字符串为
无法识别为有效的日期时间。-->System.FormatException:
字符串未被识别为有效的日期时间。\r\n
System.DateTime.Parse(字符串s,IFormatProvider,
DateTimeStyles样式)\r\n位于
ServiceStack.Text.Common.DateTimeSerializer.ParseShortestXsdDateTime(字符串
dateTimeStr)\r\n位于
ServiceStack.Text.Common.DeserializeBuiltin1.b_uuu(字符串
值)\r\n位于
ServiceStack.ServiceModel.Serialization.StringMapTypeDeserializer.PopulateFromMap(对象
实例,IDictionary
2个keyValuePairs,List1
ignoredWarningsOnPropertyNames)\r\n---内部异常堆栈结束
跟踪---\r\n位于
ServiceStack.ServiceModel.Serialization.StringMapTypeDeserializer.PopulateFromMap(对象
实例,IDictionary
2个keyValuePairs,List1
ignoredWarningsOnPropertyNames)\r\n位于
ServiceStack.ServiceModel.Serialization.KeyValueDataContractDeserializer.Parse(IDictionary
2
keyValuePairs,类型returnType)\r\n位于
ServiceStack.WebHost.Endpoints.Support.EndpointHandlerBase.DeserializeHttpRequest(类型
operationType,IHttpRequest httpReq,字符串contentType)“}”
我找到了一个在本地和生产环境下都适用的解决方案: ourdomain.dk/api/json/reply/LoadGuardBookView?日期=2014-07-24
编辑:如注释所示-这是一种方法。(YYYY-MM-DD)如果我们能看到您的代码,那会有所帮助。实际上没有相关代码可显示-但我会添加一些。。查看编辑查看我的编辑中的代码和异常。您是否尝试将其添加到web.config中<代码>可能servicestack尊重区域性设置。但是,如果您的浏览器正在发送另一种区域性格式,此问题将再次出现。最好的办法是强制jQuery发送
yyyy-MM-dd
,以便服务器端知道预期的内容。有关如何设置jQuery-datepicker区域性的信息,请参阅本文@mythz是正确的。也可以使用ISO标准“YYYY-MM-DD”格式。还有别的吗,你是在要求胃灼热。