将 2 个 wcf 服务与需要与参数相同的 class 的方法一起使用时出错
Error using 2 wcf services with methods that require the same class as param
错误在客户端演示代码
的注释中引用
服务 1 演示代码
[ServiceContract]
public interface IService1
{
[OperationContract]
Boolean AddPerson1(Person p);
}
服务 2 演示代码
[ServiceContract]
public interface IService2
{
[OperationContract]
Boolean AddPerson2(Person p);
}
客户端演示代码
Person p=ServiceReference1.Person{Name="Peter"};
new Service2Client().AddPerson2(p); //Error right here because the method requires ServiceReference2.Person
错误信息
我需要能够使用 ServiceReference1 中的 Person。也许 Class 转换会解决问题,但我不允许这样做
ServiceReference1 和 ServiceReference2 设置
错误信息很清楚:
Argument 1: cannot convert from
WpfApplicatoin1.ServiceReference1.Person
to
WpfApplication1.ServiceReference2.Person
对象不同,即使代码相同,因为命名空间。
您需要从 WpfApplication1.ServiceReference1.Person
映射到 WcfApplication1.ServiceReference2.Person
,或者将 Person
对象放在由服务和客户端共享的单独程序集中。
例如,如果您要在两者之间进行映射,您可能会有这样的内容:
Person p = ServiceReference1.Person{Name="Peter"};
ServiceReference2.Person p2 = new ServiceReference2.Person() {
Property1 = p.Property1,
Property2 = p.Property2,
// and so on
};
new Service2Client().AddPerson2(p2);
错误在客户端演示代码
的注释中引用服务 1 演示代码
[ServiceContract]
public interface IService1
{
[OperationContract]
Boolean AddPerson1(Person p);
}
服务 2 演示代码
[ServiceContract]
public interface IService2
{
[OperationContract]
Boolean AddPerson2(Person p);
}
客户端演示代码
Person p=ServiceReference1.Person{Name="Peter"};
new Service2Client().AddPerson2(p); //Error right here because the method requires ServiceReference2.Person
错误信息
我需要能够使用 ServiceReference1 中的 Person。也许 Class 转换会解决问题,但我不允许这样做
ServiceReference1 和 ServiceReference2 设置
错误信息很清楚:
Argument 1: cannot convert from
WpfApplicatoin1.ServiceReference1.Person
toWpfApplication1.ServiceReference2.Person
对象不同,即使代码相同,因为命名空间。
您需要从 WpfApplication1.ServiceReference1.Person
映射到 WcfApplication1.ServiceReference2.Person
,或者将 Person
对象放在由服务和客户端共享的单独程序集中。
例如,如果您要在两者之间进行映射,您可能会有这样的内容:
Person p = ServiceReference1.Person{Name="Peter"};
ServiceReference2.Person p2 = new ServiceReference2.Person() {
Property1 = p.Property1,
Property2 = p.Property2,
// and so on
};
new Service2Client().AddPerson2(p2);