You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 21:12:17