【问题标题】:WCF: Is there a way to return different datetime serialization based on the http Accept-Language header?WCF:有没有办法根据 http Accept-Language 标头返回不同的日期时间序列化?
【发布时间】:2010-12-22 04:07:29
【问题描述】:

我希望我的 REST 服务将 DateTime 返回为:

  • 01-dec-2009 接受语言:en-US
  • 01-dez-2009 接受语言:pt-BR

谢谢!

安德烈·卡鲁奇

【问题讨论】:

    标签: c# wcf internationalization wcf-rest


    【解决方案1】:

    我认为“序列化”是指“将某些内容转换为文本格式以进行交换/存储”,而不是呈现给人类读者。

    根据这个定义,它必须与语言无关,并且遵循 XML 序列化约定、ISO 8601 或 CultureInfo::InvariantCulture。另见http://www.mihai-nita.net/article.php?artID=20051025a

    如果我们不称之为“序列化”,那么

    【讨论】:

      【解决方案2】:

      你是如何序列化这些日期时间的?

      在我看来它们已被转换为字符串,在这种情况下,您应该能够检查 Request.UserLanguages 属性并将适当的 CultureInfo 注入到普通的 string.Format() 调用中。

      标准 XML 序列化程序使用与文化无关的格式,解释为 here

      dateTime 以以下形式指定“YYYY-MM-DDThh:mm:ss”,其中:

      • YYYY 表示年份
      • MM 表示月份
      • DD 表示日期
      • T 表示所需时间段的开始
      • hh 表示小时
      • mm 表示分钟
      • ss 表示第二个

      请注意,这些应该是 UTC。

      【讨论】:

      • 嗨 Jeremy,就是这样,但是如何在我的 WebGet 方法中访问 Accept-Language 标头?
      • 所以答案是:“没办法”?
      • @andrecarlucci:尝试查看 WebOperationContext.Current.IncomingRequest.Headers 以查看传入请求的标头。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多