非 Service/Non 控制器和 IOC 中的 ServiceStack IServiceGateway
ServiceStack IServiceGateway in Non Service/Non Controller and IOC
我有一个控制台应用程序,其中包含 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 适配器和网关始终为空。我可以在寄存器 new TestServiceGateway()
中创建网关,但它需要一个 IRequest
。如果我在那里传递 null 它也不会起作用。
hangfire调用很简单:
RecurringJob.AddOrUpdate<Tests>((t) => t.Test3(), Cron.Yearly(12, 12));
获取服务网关的API是:
HostContext.AppHost.GetServiceGateway(Request);
其中 Request
是 ServiceStack IRequest
,您可以从 ServiceStack 外部的 ASP.NET 请求创建它:
var request = HttpContext.Current.ToRequest();
或者您可以创建模拟请求:
var request = new MockHttpRequest();
我有一个控制台应用程序,其中包含 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 适配器和网关始终为空。我可以在寄存器 new TestServiceGateway()
中创建网关,但它需要一个 IRequest
。如果我在那里传递 null 它也不会起作用。
hangfire调用很简单:
RecurringJob.AddOrUpdate<Tests>((t) => t.Test3(), Cron.Yearly(12, 12));
获取服务网关的API是:
HostContext.AppHost.GetServiceGateway(Request);
其中 Request
是 ServiceStack IRequest
,您可以从 ServiceStack 外部的 ASP.NET 请求创建它:
var request = HttpContext.Current.ToRequest();
或者您可以创建模拟请求:
var request = new MockHttpRequest();