edd*_*ddy 9 c# json date date-formatting asp.net-web-api
我最近在现有的VS桌面应用程序中添加了WEB API,一切正常,直到昨天我必须添加一个带有三个参数的GET方法,其中一个是Date.好吧,起初我认为那将是一块蛋糕,但令我惊讶的是,我注意到当我在安装应用程序的服务器上发送2014/07/09(7月9日)时,它被视为2014/09/07(9月7日)因此我所有的比较都没有奏效.
我尝试过从GET方法更改为POST方法,在服务器上将区域和语言选项设置更改为相同的内容,将日期作为字符串传递,使用字符串的部分在服务器上创建Datetime对象.不幸的是他们都没有工作.
然后我记得这个桌面应用程序在它的WCF项目上有一些方法(我现在传递给web API),它完全没有问题地通过日期.查看代码一段时间后,我发现他们在使用日期的WCF项目的每个类中使用了类似的东西:
Imports System.Globalization
Imports System.Security.Permissions
Imports System.Threading
Public Class ServicioRemotoVentas
Implements IServicioRemotoVentas
Public Sub New()
MyBase.New()
Thread.CurrentThread.CurrentCulture = New CultureInfo("es-PE", False)
End Sub
Run Code Online (Sandbox Code Playgroud)
当然这个Thread.CurrentThread.CurrentCulture = New CultureInfo("es-PE",False)必须存在.现在我想知道你以前是否在Web API中使用过类似的东西?如果是这样,你如何以及在哪里放置这样的配置.
这些是我电脑上的设置:


这些是服务器设置:

我几乎忘了提到我使用这个格式yyyy/M/d以及使用json的所有其他参数传递所有日期.是否可能在Web API中对字符串进行反序列化时,这是使用系统日期格式完成的,因为我没有指定要使用的文化信息?或者在尝试序列化/反序列化日期时可能是Json错误?
与往常一样,您可以提供的任何建议或资源将不胜感激.
Rad*_*ler 13
正如评论中所讨论的那样,ASP.NET运行时确实有针对这些场景的解决方案:它是web.cofig元素<globalization>- (参见MSDN <globalization>元素)
它的结构定义为:
<configuration>
<system.web>
<globalization
enableClientBasedCulture="true|false"
requestEncoding="any valid encoding string"
responseEncoding="any valid encoding string"
fileEncoding="any valid encoding string"
responseHeaderEncoding = "any valid encoding string"
resourceProviderFactoryType = string
enableBestFitResponseEncoding = "true|false"
culture="any valid culture string"
uiCulture="any valid culture string"/>
Run Code Online (Sandbox Code Playgroud)
因此,如果我们想强制服务器/开发工作站在en-US文化中行动,我们应该使用这些显式设置:
<globalization
enableClientBasedCulture="false"
uiCulture="en-US"
culture="en-US" />
Run Code Online (Sandbox Code Playgroud)
这将为任何http请求使用正确的(期望的和设置的)文化.
同样有趣的可能是默认设置概述:
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
fileEncoding=""
culture=""
uiCulture=""
enableClientBasedCulture="false"
responseHeaderEncoding="utf-8"
resourceProviderFactoryType=""
enableBestFitResponseEncoding="false" />
Run Code Online (Sandbox Code Playgroud)
另见类似的地方:
| 归档时间: |
|
| 查看次数: |
12875 次 |
| 最近记录: |