首页 新闻 赞助 找找看

WCF 传递实体对象参数时,字段丢失问题

0
悬赏园豆:30 [已解决问题] 解决于 2016-05-18 11:04

WCF传递实体对象时,如果有DataTable 或DataSet返回类型,整个Service的其它兄弟方法 实体对象传递时,除字符型数据,其它DataTime或Int数据都会丢失。通过SvcConfigEditor和SvcTraceViewer跟踪日志时,发现3个字段,只传输了一个字符。

 

客户端代码:

1 TestServiceClient client = new TestServiceClient();
2 User user = new User() { age=11,date=DateTime.Now,name="测试!"};
3 DataTable dt = client.DoWork(user);
View Code

 

 

服务端代码:

 1  public class TestService : ITestService
 2     {
 3         public DataTable DoWork(User user)
 4         {
 5             return new DataTable("test");
 6 
 7         }
 8 
 9     }
10     [DataContract]
11     public class User
12     {
13         [DataMember]
14         public string name;
15         [DataMember]
16         public int age;
17         [DataMember]
18         public DateTime date;
19     }
View Code

 

1     [ServiceContract]
2     public interface ITestService
3     {
4 
5         [OperationContract]
6         DataTable DoWork(User user);
7 
8     }
View Code

 

 

Randy0528的主页 Randy0528 | 初学一级 | 园豆:41
提问于:2016-05-13 11:29
< >
分享
最佳答案
0

http://www.c-sharpcorner.com/UploadFile/deepak.sharma00/how-to-return-a-datatable-from-wcf-service/

收获园豆:30
Yu | 专家六级 |园豆:12980 | 2016-05-13 14:44

谢谢回复,但我要的不是解决获得dataTable,而是因为返回类型为DataTable 造成的传输User实体数据丢失问题

Randy0528 | 园豆:41 (初学一级) | 2016-05-16 15:35

@Randy0528: 你试试不用User作为参数,使用其它类型除了String,看看是不是也是不行

Yu | 园豆:12980 (专家六级) | 2016-05-17 08:43

@Yu: 不用实体对象,以下参数正常传输。

DataTable DoWork(string userName,int userId,DateTime date);
Randy0528 | 园豆:41 (初学一级) | 2016-05-17 15:23

@Randy0528: 这个丢失数据跟用不用Datatable就没关系了,我这模拟了,不会有你说的情况

Yu | 园豆:12980 (专家六级) | 2016-05-17 17:28

@Yu: 能否发一下你的解决方案代码?谢谢 randy0528@qq.com

Randy0528 | 园豆:41 (初学一级) | 2016-05-18 08:47

@Randy0528: 查收

Yu | 园豆:12980 (专家六级) | 2016-05-18 10:16

@Yu: 谢谢,我找到问题了。我在引用的时候,在高级里把 重新使用引用的程序集的类型 勾选去除了

Randy0528 | 园豆:41 (初学一级) | 2016-05-18 11:03
其他回答(1)
0

说句废话:做接口时不要用datatable传值. 

吴瑞祥 | 园豆:29449 (高人七级) | 2016-05-13 11:56

现成项目已经大量使用了。。。不知道为啥原项目没有一点问题。但如果我一更新引用接口。就报错! 

支持(0) 反对(0) Randy0528 | 园豆:41 (初学一级) | 2016-05-16 15:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册