【发布时间】:2015-11-25 21:39:42
【问题描述】:
我有一个 WCF 服务,操作如下:
public void setNotifications(List<AnnouncementDataContract> announcements)
{
foreach(AnnouncementDataContract item in announcements)
{
ent.InsertAnnouncements(item.Anc_Text, item.Anc_Date);
}
}
当我将此 WCF 服务作为 Web 引用添加到我的 MVC 应用程序中并调用如下方法时:
MyService.Service1 proxy = new MyService.Service1();
Collection<MyService.AnnouncementDataContract> dc = new
Collection<MyService.AnnouncementDataContract>();
MyService.AnnouncementDataContract dc1 = new
MyService.AnnouncementDataContract();
dc1.anc_Date = System.DateTime.Now;
dc1.anc_Text = "Announcement1";
dc.Add(dc1);
proxy.setNotifications(dc.ToArray());
服务操作中“公告”的每个项目中的值被重置,我将其作为最小日期时间值而不是我在调用操作时从我的 MVC 应用程序发送的值。
但是当我将此 WCF 服务作为服务引用添加到我的 MVC 应用程序中并调用该操作时,它工作正常,并且在服务中获得了正确的 datetime 值。
【问题讨论】:
-
你能告诉我们
AnnouncementDataContract类的定义吗? (您是否向anc_Date属性添加了[DataMember]属性?) -
这可能与生成代理的方式有关 - 我相信添加服务引用使用 svcutil,而添加 Web 引用使用较旧的 ASMX 自动生成器(现在忘记名称)。在任何情况下,服务引用都是您添加对 WCF 的引用的方式。添加 Web 参考是为了与旧版 ASMX Web 服务兼容。
-
在一个不相关的说明中:您确实应该要求客户端在他们的公告中传递 UTC 值(例如
DateTime.UtcNow)。否则,如果客户端和服务器(以及可能阅读公告的其他客户端)配置了不同的时区,您最终会陷入不必要的混乱。
标签: c# asp.net-mvc wcf