0

我有许多 WCF 服务,它们被 ASP.NET MVC 应用程序中的某个功能调用。

  1. MVC 应用调用 Contract-Service(WCF 服务)
  2. Contract-Service 在其处理过程中调用 Contract-Buy-Service(WCF 服务)
  3. Contract-Buy-Service 调用 SAM-Utility-Service(WCF 服务)

当我从 Contract-Buy-Service 运行我的 TDD 测试用例时,它工作得非常好。因为电话从 Contract-Buy-Service 转到 SAM-Utility-Service。但是,当调用来自 Contract-Service => Contract-Buy-Service => SAM-Utility-Service 时,我总是会收到错误消息,即在配置中找不到 SAM-Utility-Service 的端点。

在 contract-buy-service 和 contract-service 中都有 SAM-Utility-Service 的服务参考。我已检查该服务是否已托管并且已启动并正在运行。当我尝试通过浏览器查看时,我可以获得 WSDL。

有人能告诉我为什么服务调用没有经过多层,还是我在这里做错了什么?

谢谢!

4

1 回答 1

0

首先,我认为 Contract-Service 不需要服务参考或任何有关 SAM-Utility-Service 的知识。除非它需要直接与该服务通信以进行其他操作——在这种情况下,无论如何我都会建议另一个服务端点——它不应该知道 Contract-Buy-Service 正在做什么。这会导致您的服务更紧密地耦合,从而消除了面向服务的主要好处之一。

问题的原因可能有很多(WCF 总是这样)。但是,由于选择错误、使用不正确或交易错位,我也遇到过类似的问题。

例如,考虑一下 Contract-Service 和 Contract-Buy-Service 参与交易。SAM-Utility-Service 也可能需要一个事务,但需要一个新事务。如果第二个事务没有正确参与第一个事务,那么第一个事务可能不允许它提交或可能不会提交自己。

第一步可能是让所有三个在没有任何交易的情况下协同工作。

于 2011-09-13T23:18:04.960 回答