非服务/非控制器和IOC中的ServiceStack IServiceGateway

时间:2017-04-19 21:35:27

标签: servicestack funq

我有一个控制台应用程序,其中包含hangfire和服务堆栈服务。 Hangfire有自己的IOC适配器实现,它已集成到Funq适配器中。我正在尝试使用IGatewayService来调用inproc服务。

网关始终为空。

public class Tests
{
    public IServiceGateway gateway { get; set; }
    public Tests()
    {
        gateway =  HostContext.TryResolve<IServiceGateway>(); //tried this along with every type of registration

    }
    public void Test3() {
       // I want to use gateway here to call an inproc service
    }
}

我试过了:

Container.Register<IServiceGatewayFactory>(x => new TestServiceGatewayFactory())
            .ReusedWithin(ReuseScope.None);

            Container.Register<Tests>(new Tests() { gateway = Container.Resolve<IServiceGateway>() });

其他一些非funq适配器和网关始终为null。我可以在注册表new TestServiceGateway()中创建网关,但它需要IRequest。如果我在那里传递null也不会有效。

挂机电话很简单:

RecurringJob.AddOrUpdate<Tests>((t) => t.Test3(), Cron.Yearly(12, 12));

1 个答案:

答案 0 :(得分:0)

获取服务网关的API是:

HostContext.AppHost.GetServiceGateway(Request);

其中Request是ServiceStack IRequest,您可以使用ServiceStack之外的ASP.NET请求创建ServiceStack var request = HttpContext.Current.ToRequest();

var request = new MockHttpRequest();

或者你可以用:

创建一个模拟请求
public class ConnectionPool {

@Autowired
private Properties props;

@Autowired
private Key internalKey;

public ConnectionPool{
   System.out.println(internalKey);
   System.out.println(props);
}
}