【问题标题】:ServiceStack How to call my service from codeServiceStack 如何从代码中调用我的服务
【发布时间】:2012-09-30 10:37:16
【问题描述】:

如何调用我自己的服务?

我有一个使用其他服务来编写信息的服务。

我想在这个服务的代码中调用其他服务。

我该怎么做?

【问题讨论】:

  • 从聊天室借来的这个问题,我觉得记录下来给别人有用。

标签: c# .net servicestack


【解决方案1】:

有一个名为 base.ResolveService<TMyService>() 的基本方法,它只是从 IOC 解析您的自动装配服务并注入当前请求上下文

所以只需调用:

using (var service = base.ResolveService<MyService>()) { 
    service.Post(new MyRequest()); 
} 

您还可以仅使用请求 DTO 调用服务,该服务还将执行服务全局请求过滤器:

base.ExecuteRequest(new MyRequest());

这只是一个可以静态调用的 ServiceController 的包装器:

HostContext.ServiceController.Execute(new MyRequest(), base.Request)

【讨论】:

  • 如何从我的 ASP.NET MVC 控制器调用它?由于我的 Controller 没有继承自 ServiceStack.ServiceInterface
  • @RosdiKasim,这里是mythz关于类似问题的回答的链接stackoverflow.com/questions/10571450/…
  • 嗨,谢谢 Tom!.. 该链接真的很有帮助.. 感谢您的帮助。
  • HI @mythz 有没有办法做到这一点,也可以对请求进行流畅的验证?谢谢
  • 这是否仍然适用于“新型”服务...我在它们上看不到base.ExecuteRequest
【解决方案2】:

有点晚了,因为这在搜索引擎上弹出。 ServiceStack v4.5 的新方法是使用ServiceGateway。每个 SS Service 现在都有一个 Gateway 属性,可以针对:

var response = this.Gateway.Send(new MyRequest());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多