首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webjob方法索引-依赖项注入异常IConfiguration

Webjob方法索引-依赖项注入异常IConfiguration
EN

Stack Overflow用户
提问于 2020-06-10 22:44:24
回答 1查看 202关注 0票数 1

.NET核心2.2、WebJobs软件开发工具包v3.0

我像这样初始化我的主机

代码语言:javascript
复制
        HostBuilder builder = new HostBuilder();
        builder.ConfigureAppConfiguration((context, configApp) => {
            configApp.AddJsonFile("appsettings.json", optional: true);
            configApp.AddJsonFile(
               $"appsettings.{context.HostingEnvironment.EnvironmentName}.json",
               optional: true);
        });

        builder.ConfigureWebJobs((context, configure) => {
            configure.AddAzureStorage();
            configure.Services.AddSingleton(context.Configuration);
        });

        builder.ConfigureServices((context, services) => {
            services.AddSingleton(context.Configuration);
        });

我处理队列中消息的webJob函数如下所示:

代码语言:javascript
复制
public static void ProcessQueueMessage([QueueTrigger("queuename")] CloudQueueMessage queueMessage, 
  TextWriter log, IConfiguration configuration)

当我的主机启动时,我得到一个异常

代码语言:javascript
复制
Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException: 'Error indexing method 'Functions.ProcessQueueMessage''

InvalidOperationException: Cannot bind parameter 'configuration' to type IConfiguration. Make sure the parameter Type is supported by the binding. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-11 15:11:47

您可以使用完整的类和构造函数注入,而不是使用静态函数和参数注入。

代码语言:javascript
复制
services.AddScoped<Functions>()
services.AddSingleton(context.Configuration);

...

public class Functions
{
    private readonly IConfiguration _Configuration;

    public Functions(IConfiguration configuration)
    {
        _Configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
    }

    public void ProcessQueueMessage([QueueTrigger("queuename")] CloudQueueMessage queueMessage, 
      TextWriter log)
    {
       //
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62306404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档