在使用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 重现打开 更新引用后可以解决
但是今天同样的操作却依然不能解决问题
另外由于项目比较大 在更新时出现了 未将对象引用到实例 的错误 而且不能生成正确的代理类
不知道园子里的朋友们有没有遇到这个问题
希望能得到大家的指点
客户端自动生成的代理,将包含数据契约的定义,也就是说如果你采用自动生成代理的方式,那么客户端只需要知道服务端的服务地址即可,而不用引用任何服务端的程序集,否则就会造成命名空间冲突。
客户端和服务器的数据契约序列化后结果不一致 客户端在更新服务代码的时候会自动生成不一致的数据契约 就会造成多个命名空间有相同的“类”
建议采用服务端的数据契约的定义 而不是通过服务引用自动生成数据契约