具有 Asp.net 核心依赖注入的 Service Fabric 有状态服务
Service Fabric Stateful Service with Asp.net Core Dependency Injection
我在我的无状态服务中正确使用 Asp.net 核心 DI,因为它基本上是一个带控制器的普通 WebApi 应用程序。
我不知道如何在有状态服务中使用依赖注入。
这是有状态服务的默认构造函数:
public MyService(StatefulServiceContext context): base(context)
{
}
并在 Program.cs 中被
调用
ServiceRuntime.RegisterServiceAsync("MyStatefulType",context => new MyService(context)).GetAwaiter().GetResult();
我想在有状态服务中使用这样的东西:
private readonly IHelpers _storageHelpers;
public MyService(IHelpers storageHelpers)
{
_storageHelpers = storageHelpers;
}
我已经在有状态服务的配置部分注册了它,但是如果我尝试使用上面的代码,我会遇到错误:
StatefulService 不包含采用 0 个参数的构造函数
如何让它发挥作用?
错误与StatefulService 的构造函数有关,它至少需要一个ServiceContext 参数。您的代码仅提供 Storagehelper。
这将是使其工作的最简单方法:
服务:
private readonly IHelpers _storageHelpers;
public MyService(StatefulServiceContext context, IHelpers storageHelpers)
: base(context)
{
_storageHelpers = storageHelpers;
}
程序:
ServiceRuntime.RegisterServiceAsync("MyStatefulType",context => new MyService(context, new StorageHelper())).GetAwaiter().GetResult();
在 'program' 中,您还可以使用 IOC 容器来获取存储助手实例。
我在我的无状态服务中正确使用 Asp.net 核心 DI,因为它基本上是一个带控制器的普通 WebApi 应用程序。
我不知道如何在有状态服务中使用依赖注入。 这是有状态服务的默认构造函数:
public MyService(StatefulServiceContext context): base(context)
{
}
并在 Program.cs 中被
调用ServiceRuntime.RegisterServiceAsync("MyStatefulType",context => new MyService(context)).GetAwaiter().GetResult();
我想在有状态服务中使用这样的东西:
private readonly IHelpers _storageHelpers;
public MyService(IHelpers storageHelpers)
{
_storageHelpers = storageHelpers;
}
我已经在有状态服务的配置部分注册了它,但是如果我尝试使用上面的代码,我会遇到错误:
StatefulService 不包含采用 0 个参数的构造函数
如何让它发挥作用?
错误与StatefulService 的构造函数有关,它至少需要一个ServiceContext 参数。您的代码仅提供 Storagehelper。
这将是使其工作的最简单方法:
服务:
private readonly IHelpers _storageHelpers;
public MyService(StatefulServiceContext context, IHelpers storageHelpers)
: base(context)
{
_storageHelpers = storageHelpers;
}
程序:
ServiceRuntime.RegisterServiceAsync("MyStatefulType",context => new MyService(context, new StorageHelper())).GetAwaiter().GetResult();
在 'program' 中,您还可以使用 IOC 容器来获取存储助手实例。