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

Azure Durable Functions:Activity函数返回对象在Orchestrator中为空

Azure Durable Functions中Activity返回对象列表在Orchestrator中属性为空的问题

使用Azure Durable Functions时遇到一个问题:Activity函数返回自定义类CompanyModel的对象列表,在Activity函数返回前检查结果,所有数据都正确无误,但在Orchestrator中,仅能得到元素数量正确的初始化列表,列表中的对象本身为空——所有属性均无值。

尝试过使用IEnumerable和List作为返回类型,没有区别;也调整过JSON属性设置,但均未解决问题。自定义CompanyModel在Activity函数中能正确反序列化,但在Orchestrator中所有值丢失,仅对象被初始化。

相关代码如下:

Orchestrator

public static class OrchestratorFunc
{
    [Function(nameof(OrchestratorFunc))]
    public static async Task RunOrchestrator([OrchestrationTrigger] TaskOrchestrationContext context)
    {
        ILogger logger = context.CreateReplaySafeLogger(nameof(OrchestratorFunc));

        using (logger.BeginScope(new Dictionary<string, object> { ["OrchestrationInstanceId"] = context.InstanceId }))
        {
            logger.LogInformation($"OrchestratorFunc Executed. InstanceId={context.InstanceId}");

            var accessToken = await context.CallActivityAsync<string>(nameof(RetrieveAccessTokenActivity));
            var companies = await context.CallActivityAsync<IEnumerable<CompanyModel>>(nameof(GetCompaniesActivity), accessToken);

            logger.LogInformation($"OrchestratorFunc completed");
        }
    }
}

Activity Function(GetCompaniesActivity)

internal class GetCompaniesActivity
{
    private readonly HttpClient _httpClient;

    public GetCompaniesActivity(IHttpClientFactory httpClientFactory)
    {
        _httpClient = httpClientFactory.CreateClient();
    }

    [Function(nameof(GetCompaniesActivity))]
    public async Task<IEnumerable<CompanyModel>> Run([ActivityTrigger] string accessToken, string instanceId, FunctionContext executionContext)
    {
        ILogger logger = executionContext.GetLogger(nameof(GetCompaniesActivity));

        var result = new List<CompanyModel>();

        using (logger.BeginScope(new Dictionary<string, object> { ["OrchestrationInstanceId"] = instanceId }))
        {
                using var request = new HttpRequestMessage(HttpMethod.Get, "http://");
                request.Headers.Add("Authorization", $"Bearer Authorization: {accessToken}");

                var response = await _httpClient.SendAsync(request);

                if (response.IsSuccessStatusCode)
                {
                    var jsonResponse = await response.Content.ReadAsStringAsync();
                    var companiesResponse = JsonConvert.DeserializeObject<CompanyResponse>(jsonResponse);
                    if (companiesResponse != null && companiesResponse.Companies != null)
                    {
                        result.AddRange(companiesResponse.Companies);
                    }
                }
                else
                {
                    throw new TaskFailedException($"{response.StatusCode} {response.ReasonPhrase}");
                }

            return result.AsEnumerable<CompanyModel>();
        }
    }
}

CompanyModel

[JsonObject(MemberSerialization.OptIn)]
public class CompanyResponse
{
    [JsonProperty("results")]
    public required List<CompanyModel> Companies;
}

[JsonObject(MemberSerialization.OptIn)]
public class CompanyModel
{
    [JsonProperty("id")]
    public Guid Id;

    [JsonProperty("companyName")]
    public required string CompanyName;

    [JsonProperty("street")]
    public required string Street;

    [JsonProperty("zip")]
    public required string Zip;

    [JsonProperty("city")]
    public required string City;

    [JsonProperty("country")]
    public required string Country;

    [JsonProperty("vat")]
    public required string VAT;

    [JsonProperty("sys")]
    public int? Sys;

    [JsonProperty("idExternal")]
    public required string IdExternal;

    public override string ToString()
    {
        return $"{CompanyName} - {Id} - {IdExternal}";
    }
}
  • Activity函数返回值预览:列表中的CompanyModel对象所有属性均填充了正确的值
  • Orchestrator中返回的列表预览:列表元素数量与Activity返回的一致,但每个CompanyModel对象的所有属性都为空值

请问是否有人遇到过此问题,或知道为何对象从Activity传递到Orchestrator时会被‘清零’?


内容的提问来源于stack exchange,提问作者rafastryk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:28:27