我有2个WCF服务。服务A包含MyEntity类型的定义。服务B包含对服务A的服务引用,因此可以使用MyEntity的类型。所以我有一个看起来像这样的方法:
protected void Update (ServiceA.MyEntity entity)
{
//Do stuff
}
现在我想在服务A中使用此方法,因此我添加了服务B的服务引用并尝试:
protected UpdateServiceB(MyEntity entity)
{
using(ServiceB.ServiceClient client = new ServiceB.ServiceClient())
{
client.Update(entity);
}
}
虽然服务B使用服务A中定义的类型,但这并没有起作用并且抱怨类型不一样,我怎么能解决这个问题?
更新
由于时间限制我避免了这个问题,而是将Guid of MyEntity从服务A传递到服务B.然后我使用了一种名为' GetMyEntity(Guid entityId)'在服务A中检索服务B中的实体:
protected void Update (Guid entityId)
{
MyEntity entity = new MyEntity();
using (ServiceAClient client = new ServiceAClient())
{
entity = client.GetMyEntity(entityId);
}
//Do stuff
}
答案 0 :(得分:3)
听起来您正在通过Visual Studio的添加服务引用命令来使用服务引用。虽然足够,但由于以下原因,它可能在中型到大型项目中变得麻烦:
服务类型在客户端中重新定义,而不是使用公共库(如您所发现的)。
当服务合同发生变化时,这通常会导致服务更新,但由于点1,客户端中的服务不会更新。随着模式的发展,客户端代理会变得过时。您必须刷新参考
我最好建议不使用添加服务参考并手动滚动客户端代理。
一旦执行,您将拥有其他库:
您现在不必实施上述所有方法。所需的只是手动 ClientProxies.dll ,您可以随后根据需要迭代到其余部分。