1

我在同一个解决方案中有两个项目,一个服务和一个消费者应用程序。在服务中,我有许多可以由消费者应用程序实例化的类,但有些类无法访问。除了名字没有区别。所有类都是公共的,所以它们都应该被看到。是否有任何缓冲问题或任何其他可能导致问题表现得像这样的问题?

4

3 回答 3

3

当您使用 WCF 或任何其他 Web 服务/删除技术时,消费者无法访问服务器类。而是创建代理类。将它们视为能够在应用程序边界上调用方法的一组接口。您可以实例化代理类,但是当您调用方法时,代理类将转到服务并调用服务托管的类的相应方法。

如果双方都使用它们,您需要使用类库并将共享类移动到那里(并使用服务和消费者部署 dll)。

更新(感谢 razlebe):
不应在 DLL 中共享业务逻辑。它应该由服务器托管。但是共享支持类(例如进行数据格式化的类)以避免代码重复是有意义的。

于 2012-06-08T14:40:54.897 回答
2

我的猜测是“不可访问”的类是在上一代代理之后创建的(服务类,客户端)。检查重新生成代理是否有帮助。

于 2012-06-08T14:28:32.233 回答
2

当您通过以下方式更新服务类和更改接口时:

  • 添加方法(您的情况)
  • 删除方法
  • 更改签名

您的消费者需要了解这种变化。您必须更新服务参考( http://msdn.microsoft.com/en-us/library/bb628652.aspx ) 以重建代理。

如何更新它?

在这里查看如何: http: //msdn.microsoft.com/en-us/library/bb628652.aspx)但是一张图片胜过千字:

更新服务引用的视觉图像

于 2012-06-08T14:32:15.427 回答