我有一个控制台应用程序,其中包含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));
答案 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);
}
}