首页新闻找找看学习计划

wcf服务异常

0
悬赏园豆:10 [已解决问题] 解决于 2013-11-22 08:59

异常信息: The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://tempuri.org/:GetNewProjectListResult. The InnerException message was ''Element' '_x003C_Province_x003E_k__BackingField' from namespace 'http://schemas.datacontract.org/2004/07/TC.WCF.DALModel.LM' is not expected. Expecting element '_x003C_ProjectdateCus_x003E_k__BackingField'.'. Please see InnerException for more details.
异常根源: 'Element' '_x003C_Province_x003E_k__BackingField' from namespace 'http://schemas.datacontract.org/2004/07/TC.WCF.DALModel.LM' is not expected. Expecting element '_x003C_ProjectdateCus_x003E_k__BackingField'.

这个异常是什么原因呐。。。

Rookier的主页 Rookier | 小虾三级 | 园豆:652
提问于:2013-10-10 10:54
< >
分享
最佳答案
0

序列化错误,翻译成中文就是期望的元素名称是:_x003C_ProjectdateCus_x003E_k__BackingField,而不是 _x003C_Province_x003E_k__BackingField。

收获园豆:10
Launcher | 高人七级 |园豆:45045 | 2013-10-10 11:00

这个就是wcf服务返回的数据啊 

  public IList<LM_ProjectList> GetNewProjectList

这样的错误是什么问题。。。

Rookier | 园豆:652 (小虾三级) | 2013-10-10 11:12

@Rookier: 如果是返回的数据的话,意思就是服务器返回的数据包含 _x003C_Province_x003E_k__BackingField 字段,而你客户端想得到的是 :_x003C_ProjectdateCus_x003E_k__BackingField 字段。

Launcher | 园豆:45045 (高人七级) | 2013-10-10 13:08

@Launcher: 还是不明白。。服务器的实体和客户端的实体类用的是同一个model的dll

Rookier | 园豆:652 (小虾三级) | 2013-10-10 13:59

@Rookier: 也就是说你有个 Model.dll,里面包含了 LM_ProjectList 类型,然后你的客户端和服务端都使用该类型,是吗?

如果是的话,请问你的客户端的代理类是如何编写的?

Launcher | 园豆:45045 (高人七级) | 2013-10-10 15:22

@Launcher: 是的,

public IList<LM_ProjectList> GetNewLM_ProjectList(int pageIndex, int pageSize, int Folg, int UserId, string strWhere, string strOrder, out int count)
        {
            ILM_ProjectList wcf = TC.Framework.Core.WCFProxyFactory.Create<TC.WCF.Contract.LM.ILM_ProjectList>("LM_ProjectList");
            IList<LM_ProjectList> list = wcf.GetNewProjectList(pageIndex, pageSize, Folg, UserId, strWhere, strOrder, out count);
            return list;
        }
<endpoint address="net.tcp://localhost:8000/LMDbService" binding="netTcpBinding"
        bindingConfiguration="MyTcpBinding" contract="TC.WCF.Contract.LM.ILM_ProjectList"
        name="LM_ProjectList" />
Rookier | 园豆:652 (小虾三级) | 2013-10-10 15:54

@Rookier: ILM_ProjectList 这个也是服务器和客户端共用的同一个 dll 中的接口契约吗?

Launcher | 园豆:45045 (高人七级) | 2013-10-10 16:29

@Launcher: 嗯,是的==

Rookier | 园豆:652 (小虾三级) | 2013-10-14 09:11

@Rookier: 那你需要看一下客户端引用的DLL中的 ILM_ProjectList 类型的属性有_x003C_Province_x003E_k__BackingField 还是 _x003C_ProjectdateCus_x003E_k__BackingField ?

然后看一下服务器返回的序列化消息内的有 _x003C_Province_x003E_k__BackingField 还是 _x003C_ProjectdateCus_x003E_k__BackingField ?

Launcher | 园豆:45045 (高人七级) | 2013-10-14 11:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册