asp.net-mvc – delphi web服务从.net mvc应用程序获取不同的日
我知道大多数人建议的解决方案是将我的对象的属性从TDateTime更改为String,但我无法访问Web服务应用程序的所有源代码,因此有些情况下我无法做到这一点.所以我宁愿确保我处理这个问题.
简而言之,我有一个.NET MVC应用程序,它调用Delphi 2005编写的服务应用程序的Web方法来获取约会对象,包括开始日期/时间和结束日期/时间.用户可以更改约会,然后MVC应用程序调用另一个Web方法,传入修改的约会对象,以便服务应用程序存储. TAppointemnt的StartTime和EndTime属性在Delphi中定义为TDateTime.它们在WSDL中显示为xs:dateTime. Visual Studio在Reference.cs中将它们创建为System.DateTime. 通过在Delphi中使用Web App Debugger,并将MVC应用程序的端点设置为Web服务EXE,我可以实时浏览这两个应用程序.我所看到的是,当从Web服务传递到.NET MVC时,发送和接收的约会对象的StartTime和EndTime属性是相同的,但是当从.NET MVC传递到Delphi时,时间调整了13个小时网络服务. 虽然我理解.NET会进行一些内部时区调整,但只有当客户端和服务器位于不同的时区时才会显而易见.就我而言,客户端浏览器,.NET MVC应用程序和Delphi服务应用程序都在同一个应用程序中.事实上,它们都在同一台机器上运行,所以我不知道为什么会出现差异. 看起来他们用不同的方式用XML编码日期时间…… 从Delphi服务应用程序到.NET MVC应用程序的响应: <StartTime xsi:type="xsd:dateTime">2012-10-29T08:00:00.000+13:00</StartTime><EndTime xsi:type="xsd:dateTime">2012-10-29T09:15:00.000+13:00</EndTime> 从.NET MVC应用程序到Delphi服务应用程序的POST: <StartTime xsi:type="xsd:dateTime">2012-10-29T08:00:00</StartTime><EndTime xsi:type="xsd:dateTime">2012-10-29T09:15:00</EndTime> 解决方法
我发现了一个适合我的解决方案.
在我的模型中,我处理对约会的更新,我传递了由视图组件生成的约会对象,该对象不包括所有属性.只有那些观点.要完成约会,我从服务应用程序获取未更改的版本,并根据新对象修改其属性. 我在调试时发现,从服务应用程序检索到的wsAppointment的StartTime和EndTime属性具有DateTimeKind为Local,而pAppointment参数的StartTime和EndTime设置为Unspecified.因此,我传回服务应用程序的Local DateTimeKind被Unspecified覆盖. 为了解决这个问题,我使用DateTime.SpecifyKind来显式设置Kind属性,如下所示: wsAppointment.StartTime = DateTime.SpecifyKind(pAppointment.StartTime,DateTimeKind.Local); wsAppointment.EndTime = DateTime.SpecifyKind(pAppointment.EndTime,DateTimeKind.Local); 希望这可以帮助遇到相同或类似问题的其他人. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net mvc – asp.net mvc decorate [Authorize()]与多个
- asp.net – 将ControlParameter添加到SqlDataSource可以防止
- ASP.NET Core 2.2 : 二十七. JWT与用户授权(细化到Action)
- 部署DotNetNuke并将ASP.NET应用程序分开 – 可能的问题?
- asp.net-mvc-3 – MVC3 – 复杂模型,属性具有相同的字段名称
- asp.net-mvc – 是否可以在每页捆绑脚本和样式
- asp.net-mvc-3 – Rackspace Cloud Sites和ASP.NET 4
- asp.net – 错误:类型存在于两个目录中
- ASP.NET 高性能分页代码
- iis-7 – IIS重置会强制缓存项目重新发送吗?
- CKEditor数据绑定在asp.net核心mvc中
- asp.net-mvc – Html.BeginForm()和ajax.beginfo
- Fluent验证比较字段字符串格式args
- asp.net-mvc – ASP.NET MVC 2 RC区域和共享模型
- asp.net – 数据注释 – 使用属性扩展并在资源文
- asp.net-mvc – MVC3部署依赖问题
- asp.net-mvc – 如何将XML作为POST传递给ASP MVC
- ASP.NET会话状态和多个工作进程
- asp.net-mvc – 区域内的Asp.Net MVC IgnoreRout
- asp.net – AntiForgeryToken是否需要会话状态?