解决方案与两个服务冲突

时间:2013-02-19 08:22:20

标签: servicestack

我一直在尝试使用以下方案设置解决方案:

  1. 客户端应用X称为服务A
  2. 服务A调用类库Y
  3. 班级图书馆Y致电服务B
  4. 所以项目以这种方式相互引用:

    • 客户端应用X - >参考服务A
    • 服务A - >引用类库Y
    • 班级图书馆Y - >参考服务B

    我已将项目配置为开始调试所有项目(类库除外),并且服务在不同端口上的IIS Express下运行。

    当我使用SocialBootstrapApi项目作为服务的模板并开始调试时,服务A启动正常,但我在服务B上收到编译错误:

    CS0121: The call is ambiguous between the following methods or properties:
    'ServiceStack.Mvc.Bundler.ToJsBool(bool)' and 'ServiceStack.Mvc.Bundler.ToJsBool(bool)'
    

    在线

    App.models.login.set({ isAuthenticated: @session.IsAuthenticated.ToJsBool() });
    

    我还测试了使用一个空的ASP.NET项目+ ServiceStack.Host.AspNet作为模板,服务A再次运行,但我得到了

    System.IO.InvalidDataException: AppHostBase.Instance has already been set
    

    在线

    new AppHost().Init();
    

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试在其他工作主机中启动主机。我建议你重新排序和解耦依赖关系。

您可以通过以下方式执行此操作:

  • 库Y根据自己的需要公开接口/合同。没有任何服务的直接引用是硬编码的。
  • 服务B实现该接口(或库B执行它)。
  • 然后,服务A或AppX是配置所有服务的唯一主机,您将所有部分与IoC容器挂钩。

如果给出更具体的服务描述,我可以提出更好的建议。 Servicestack允许您通过IoC容器和IMessageService

分离服务间调用