覆盖ASP.NET WebMethod参数的DateTime序列化
我正在努力清理大型代码库中的错误,其中没有人关注本地时间与UTC时间.
我们想要的是一种全局忽略发送到ASP.NET Web服务和从ASP.NET Web服务发送的DateTime对象的时区信息的方法.我有一个检索操作的解决方案.数据仅在数据集中返回,我可以查找DateTime列并将DateTimeMode设置为Unspecified.这解决了我在数据集内来回传递的所有数据的问题. 但是,DateTime对象也经常作为参数直接传递给Web方法.我想剥离任何传入的时区信息.而不是搜索我们的客户端代码并使用DateTime.SpecifyKind(..)将所有DateTime变量设置为Undefined,我想做一些全局ASP.NET覆盖来监视传入参数并去掉时区信息. 这样的事情可能吗?或者还有另一种更简单的方法来做我想做的事情吗? 只是重申 – 我不关心时区,每个人都处于同一时区.但是有几个用户的机器配置不当,时区错误等等.所以当他们在2008年7月1日发送时,我将在2008年6月30日22:00:00在服务器端自动转发它们本地时间到服务器的本地时间. 更新:另一种可能性是,如果可以在客户端.NET代码上进行更改,以改变具有Kind’Undefined’的DateTime对象的序列化方式. 解决方法
我经常在许多应用程序,服务和不同平台(.NET,Java等)上处理这个问题.请相信我,你不希望假装你不关心时区的长期后果.在追逐许多非常难以修复的错误之后,您会希望得到关注.
因此,您应该捕获正确的时区或强制使用特定的时区,而不是剥离时区.如果您合理,可以修复各种数据源以提供正确的时区.如果它们不受您的控制,则强制它们到服务器的本地时区或UTC. 一般的行业惯例是强制一切为UTC,并将所有生产硬件时钟设置为UTC(即服务器,网络设备,如路由器等).然后,您应该在UI中转换为用户的本地时区. 如果你现在正确修复它,它可以很容易和便宜.如果你故意打破它,因为你认为它会更便宜,那么当你不得不解开可怕的混乱时,你将没有任何借口. 请注意,这类似于字符串的常见问题:没有纯文本(没有字符编码的字符串),也没有普通(无时区)时间/日期.假装否则是痛苦和痛苦的根源,以及令人尴尬的错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 从ASP.NET WebForms迁移到ASP.NET MVC
- asp.net – 配置IIS服务器使用Aurelia框架并推送状态
- asp.net-mvc – 适用于大型网站的ASP.NET MVC项目结构
- asp.net-mvc – 任何支持ASP.NET MVC的图表控件,支持具有不
- asp.net-mvc-4 – 在区域中使用Url.RouteUrl()和路由名称
- 我可以将非MVC asp.net应用程序转换为Azure兼容吗?
- asp.net-core – 在.NET Core Web API上为CORS启用OPTIONS标
- 在MVC 4中使用ASP.Net Identity
- asp.net – Nlog数据库目标 – 是否使用keepConnection?
- asp.net – 如何使用Html.ActionLink在标记中添加span标记
- asp.net-core – ASP.Net核心maxUrlLength
- asp.net-mvc – 为IIS托管的.SVC文件配置XML-RPC
- 将ASP.NET引入Thinking Request是Ajax请求jQuery
- asp.net – 比HttpHandlers快的东西?
- 单元测试 – ASP .NET Web API控制器测试
- asp.net-mvc – ASP.NET MVC 2 DropDownList无法
- 如何在ASP.Net Gridview中添加“确认删除”选项?
- asp.net-mvc – 为什么DropDownListFor会在提交后
- asp.net – 为什么我无法访问usercontrol中的页面
- asp.net-mvc – 无法加载文件或程序集’WebMatri