c# - 将结构映射注册表添加到 Microsoft.Azure.Functions.Extensions.DependencyInjection
问题描述
我尝试通过阅读此博客将 DI 应用到 Azure Function 中。Azure Function 中的注入服务属于另一个使用 Structuremap for DI 的项目。我的问题是我无法将 Structuremap 注册表添加到 Azure Function Startup。下面是一个 Startup 类的例子
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.Configure();
}
}
我尝试编写一个 ContainerConfigurator 类(添加这些注册表)
public static class ContainerConfigurator
{
public static void Configure(this IServiceCollection services)
{
var container = new Container(config =>
{
config.Scan(s =>
{
s.LookForRegistries();
s.WithDefaultConventions();
s.TheCallingAssembly();
});
config.Populate(services);
});
return container;
}
}
这是函数类
public class FunctionX
{
private readonly IXService _xService;
public GetReports(IXService xService)
{
_xService = xService;
}
[FunctionName("GetX")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req, ILogger log)
{
log.LogInformation("Get x");
return await Task.FromResult(new OkObjectResult("OK"));
}
}
当我测试端点时,我收到有关解决“IXService”问题的错误消息。我不知道我到底想念什么。有没有人有任何解决方案?
解决方案
我认为您需要在初创公司中明确注册您的服务:
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddScoped<IXService, XService>();
}
}
Azure 功能甚至支持 DI,但显然它与 ASP.NET Core 差别不大。
推荐阅读
- rabbitmq - 为什么我的 RabbitMQ 消息无法使用 Apache Beam 序列化?
- docker - 创建 docker 映像时出现 yum 代理错误
- php - 使用 symfony 命令导入大量 csv 数据太慢了
- java - 使用 Spring Boot 和 Hibernate 保护单个实体免于级联删除
- python - 创建虚拟环境并激活它,然后在该激活的虚拟环境中打开命令窗口
- angularjs - 使用 ng-options 选择样式选项
- elasticsearch - 如何在 Kibana 中设置自定义 @timestamp?
- r - 合并两个向量,但只保留一个向量的唯一元素
- javascript - 在 JS 中选择返回先前选择的值的值
- html - 自动填充用户名/密码时如何防止Chrome更改字体?