我正在尝试使用任何SF服务上下文中提供的“ConfigurationPackage”从SF配置中读取我的配置。我的班级看起来像这样:
internal class ServiceFabricDbConfiguration : IDbConnectionConfig
{
private ConfigurationPackage _configurationPackage;
public ServiceFabricDbConfiguration(ServiceContext context)
{
_configurationPackage = context.CodePackageActivationContext.GetConfigurationPackageObject("Config");
}
public string UserName =>
_configurationPackage.Settings.Sections["Db_Configuration"]
.Parameters[
"Username"]
.Value;
}
我正在使用autofac作为我的DI容器,并且当我向SF运行时注册时,可以通过显式捕获对ServiceContext的引用来注册上述类:
ServiceRuntime.RegisterServiceAsync("ApiType",
context =>
{
Bootstrapper.SetContext(context);
return new Api(context);
})
.GetAwaiter()
.GetResult();
有没有办法可以在引导程序中注册ServiceContext,理想情况是在引导程序类中?
我目前正在尝试使用Autofac.ServiceFabric来注册我的actor /服务,但是隐藏了ServiceContext,这使得上面的内容更难实现(尽管这样可以更容易维护干净的autofac模块定义)
答案 0 :(得分:1)
GetActivationContext(
中有静态方法FabricRuntime
)。您也许可以使用它来注入激活上下文。
在开发过程中,Autofac.ServiceFabric https://github.com/autofac/Autofac.ServiceFabric也可能对您有用。这里有一篇关于它的博客文章https://alexmg.com/introducing-the-autofac-integration-for-service-fabric/,其中还包含示例代码的链接!它目前处于发布前(测试阶段),但过去几个月我一直在使用它。
答案 1 :(得分:1)
PR 8使Autofac.ServiceFabric
中的ServiceContext可用