azure - Webjobs 方法索引 - 依赖注入异常 IConfiguration
问题描述
.NET Core 2.2,WebJobs SDK v3.0
我像这样初始化我的主机
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 函数如下所示:
public static void ProcessQueueMessage([QueueTrigger("queuename")] CloudQueueMessage queueMessage,
TextWriter log, IConfiguration configuration)
当我的主机启动时,我得到一个异常
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.).
我究竟做错了什么?
解决方案
您可以使用完整的类和构造函数注入,而不是使用静态函数和参数注入。
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)
{
//
}
}
推荐阅读
- angularjs - 表单没有重复密钥仍然出现“无法解密防伪令牌”错误
- python - VSCode Python 扩展:扩展主机意外终止
- asp.net - 如何将 ASP.NET 4.8 ConfigBuilders 与 web.config 的 system.serviceModel 部分一起使用
- regex - 带有 If 条件问题的正则表达式
- dataframe - 无法从 spark 数据帧将数据加载到配置单元中
- php - 我怎样才能在php中正确放置一些变量的路径?
- jenkins - 无法为类 org.jenkinsci.plugins.workflow.job.WorkflowRun 序列化 hudson.model.Actionable#Actions
- linux - 操作系统级别的 Erlang 套接字
- google-apps-script - 如何识别为一张 Google 表格提供多个 Google 表单?
- python - 我可以通过存根文件让 VSCode 引用外部函数而无需导入它们吗?