如何解决Azure Function参数中的“Object Reference”错误
解决Azure Functions中ServiceBusTrigger的配置引用错误
错误原因
ServiceBusTrigger属性的Connection参数要求是编译时常量,你代码里直接引用实例字段_conf,但类实例创建前属性就会被初始化,此时_conf还未赋值,因此抛出对象引用未设置的错误。
解决方案
方案1:直接使用配置键名(官方推荐)
把Connection参数设置为配置文件中的键名,Azure Functions运行时会自动从IConfiguration中读取对应值:
[Function("Function2")] public void Run([ServiceBusTrigger("registrationsconfirmationemails", Connection = "azureservicebus")] string myQueueItem) { Console.WriteLine(myQueueItem); _logger.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}"); }
方案2:方法内注入IConfiguration(复杂场景用)
如果需要在方法内处理其他配置逻辑,可以直接在Run方法参数中注入IConfiguration:
[Function("Function2")] public void Run( [ServiceBusTrigger("registrationsconfirmationemails", Connection = "azureservicebus")] string myQueueItem, IConfiguration configuration) { // 按需读取其他配置 var serviceBusConn = configuration.GetSection("azureservicebus").Value; Console.WriteLine(myQueueItem); _logger.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}"); }
优化构造函数配置注入
Azure Functions支持直接注入IConfiguration,无需手动编写GetConf方法,简化代码:
public class Function2 { private readonly ILogger _logger; private readonly IConfiguration _conf; public Function2(ILoggerFactory loggerFactory, IConfiguration configuration) { _logger = loggerFactory.CreateLogger<Function2>(); _conf = configuration; } [Function("Function2")] public void Run([ServiceBusTrigger("registrationsconfirmationemails", Connection = "azureservicebus")] string myQueueItem) { Console.WriteLine(myQueueItem); _logger.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}"); } }
内容的提问来源于stack exchange,提问作者yyhnfd
相关产品推荐
相关产品推荐

