首页 新闻 赞助 找找看

wcf 实体引用不确定的错误

0
悬赏园豆:50 [待解决问题]

在使用WCF进行开发的过程中 总是偶尔的会被一个错误给折磨

错误 501 “AreaInfoPackage”是“AreaInfoClient.AreaInfoPackage”和“Entities.AreaInfoPackage”之间的不明确的引用

服务端引用的是程序集entities

正确生成代理类的情况应该是内部的实体引用为entities内的实体类

 public OPN.Entities.AreaInfoPackage[] GetAreaByKind(string level) {
            return base.Channel.GetAreaByKind(level);
        }

出现错误的情况是 代理类内的实体引用 变成了错误的命名空间 命名空间规则为 项目默认命名空间+代理类类名+实体对象  此时的对象已经不是同一个对象  无法正常编译

错误代码

 public OPN.Control.OPN.Services.AreaInfoClient.AreaInfoPackage[] GetAreaByKind(string level) {
       return base.Channel.GetAreaByKind(level);
}

特别是今天  把整个项目给清理了一下  然后编译  全部代理类实体引用错误

在以往的处理过程中  通常采用的方法是关闭VS  重现打开 更新引用后可以解决

但是今天同样的操作却依然不能解决问题

另外由于项目比较大  在更新时出现了  未将对象引用到实例 的错误 而且不能生成正确的代理类

不知道园子里的朋友们有没有遇到这个问题  

希望能得到大家的指点

Split.U的主页 Split.U | 初学一级 | 园豆:143
提问于:2011-07-30 23:17
< >
分享
所有回答(2)
0

客户端自动生成的代理,将包含数据契约的定义,也就是说如果你采用自动生成代理的方式,那么客户端只需要知道服务端的服务地址即可,而不用引用任何服务端的程序集,否则就会造成命名空间冲突。

Launcher | 园豆:45045 (高人七级) | 2011-08-01 11:56
只是引用了最底层的 实体类 程序集 我想这个不是主要原因
因为我们一直都是这样用的 只是偶尔会出现上述的情况
莫不是问题出在服务解析的环节上?不能正确解析服务导致的?
支持(0) 反对(0) Split.U | 园豆:143 (初学一级) | 2011-08-01 18:40
@Split.U:你的实体类是作为数据契约使用的吗?你这样用,是因为你在自动生成代码的时候指定了和服务端同样的命名空间,骗过了编译器,但不能说明你这种用法是正确的.要么全部使用自动生成的代码,要么全部引用服务端代码,包括数据契约和服务契约.
支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2011-08-02 09:22
0

客户端和服务器的数据契约序列化后结果不一致 客户端在更新服务代码的时候会自动生成不一致的数据契约 就会造成多个命名空间有相同的“类”

建议采用服务端的数据契约的定义 而不是通过服务引用自动生成数据契约

菜鸟老了 | 园豆:145 (初学一级) | 2011-09-03 08:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册