繁体   English   中英

Servicestack POST DateTime问题

[英]Servicestack POSTing DateTime issue

奇怪的是,这在本地有效,但是当它部署到Azure网站时却无法

在Azure上失败的POST变量是:

name=Test&venue=1&fromDate=26%2F06%2F14&toDate=01%2F07%2F14&eventType=1

如果我发布以下内容,则可以使用:

name=Test&venue=1&eventType=1

因此,这一定与日期格式有关。

请求上的数据类型为DateTime ,如果我将其设置为字符串,则可以正常工作-然后可以调用request.ConvertTo<Model> ,一切都按预期传递。 我只是不想在请求上将fromDate和toDate设置为字符串。

有谁知道为什么这会失败?

这看起来像是一个全球化问题。 Azure服务器将使用en-US文化,期望以mm/dd/yy格式进行解析。

但是,您使用的是英国日期格式dd/mm/yy ,因此文化为en-GB 您的开发机器将设置为已使用en-GB区域设置,因此在本地测试时没有问题。

您可以在web.config指定区域性:

<configuration>
    <system.web>
        <globalization uiCulture="en-GB" culture="en-GB" />
    </system.web>
</configuration>

或者,您可以在运行时通过global.asax

public void PreRequestHandlerExecute(object sender, EventArgs e)
{
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
}

或者,您可以修改ServiceStack.Text如何反序列化DateTime ,但是我不推荐这种方法。 AppHost Configure方法中:

JsConfig<DateTime>.DeSerializeFn = date => DateTime.ParseExact(date, "dd/MM/yy", CultureInfo.InvariantCulture);

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM