wcf - 具有不同契约(Contract)但业务对象相同的两个 WCF 服务

标签 wcf wcf-client

例如,我在 IIS 中托管了两个服务。

[ServiceContract]
public interface IDeviceService
{
    [OperationContract]
    DeviceCollection GetAllDevices(Customer customer);

}

[ServiceContract]
public interface IUserService
{
    [OperationContract]
    User Authenticate(string username, string password);

}

UserService 中的 Authenticate 操作返回的 User 对象和 DeviceService 中 GetAllDevices 操作返回的 DeviceCollection 都具有 Customer 的子对象定义。 Customer 是一个业务对象,与 User 和 Device 对象在同一个程序集中。

我的问题出在客户端 - 当我调用设备操作时
userProxy.GetAllDevices(user.Customer);

编译器提示以下消息:

参数 1 - 无法从 UserService.Customer 转换为 DeviceService.Customer

我可以很好地连接到这两个服务,问题是 Customer 的对象定义。我真的不想将操作放在同一个服务中,因为它们似乎自然地存在于自己的服务中。我想我要问的是其他程序员如何处理这样的问题?

干杯,
斯图尔特

最佳答案

如果要跨多个服务共享数据协定,则必须将有问题的数据协定编译成其自己的程序集,然后将该程序集分发给客户端。

尽管类型看起来相同,但它实际上是两种不同的类型,这就是为什么您会看到您所看到的错误。您唯一的其他选择(除了单独的共享程序集)是将两个服务合并为一个,以便它们可以共享数据协定。

关于wcf - 具有不同契约(Contract)但业务对象相同的两个 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1033238/

相关文章:

wcf - IIS 上的 WCF 服务出现 HTTP 错误 403.1

c# - 如何在应用程序之间同步 ObservableCollection

java - Windows 托管的 WCF 服务向 JAVA 客户端返回 400 Bad Request Invalid Hostname

c# - WCF System.Object 序列化

c# - 是否强制执行 WCF 数据流限制?

c# - WCF 服务引用 - 重用类型时未生成代理

c# - 使用 SSL/TLS 时出现 WCF 错误

.net - 带有动态参数的 ChannelFactory 错误

wsdl - 使用svcutil生成Web服务代理的问题

wcf-client - 有没有办法在 VS 2010 中禁用 WCF 服务调试?