Устойчивая функция Azure: обнаружено многопоточное выполнение (с образцом кода по умолчанию)

Я создал следующее, используя предоставленный по умолчанию пример кода в Функциях Azure:

  1. HTTP-стартер с надежными функциями
  2. Оркестратор устойчивых функций
  3. Активность устойчивых функций с именем Hello1

HTTP Starter вызывает Orchestrator, но Orchestrator не может вызвать Activity.

Код Orchestrator, который идентичен исходному образцу, за исключением того, что добавлено меньше выходных данных, а для имени действия задано значение Hello1:

public static async Task<List<string>> Run(DurableOrchestrationContext context)
{ 
    var outputs = new List<string>();

    // Replace "Hello" with the name of your Durable Activity Function.
    outputs.Add(await context.CallActivityAsync<string>("Hello1", "Tokyo"));

    // returns ["Hello Tokyo!", "Hello Seattle!", "Hello London!"]
    return outputs;
}

Orchestrator выдает следующую ошибку:

Функция «DurableFunctionsOrchestrator1 (Orchestrator)» завершилась с ошибкой. Причина: System.AggregateException: произошла одна или несколько ошибок. (Обнаружено многопоточное выполнение. Это может произойти, если код функции оркестратора ожидает выполнения задачи, которая не была создана методом DurableOrchestrationContext.

Единственный вызов await выполняется для объекта DurableOrchestrationContext, так что же дает?

My HTTP Starter — пример кода по умолчанию без изменений:

public static async Task<HttpResponseMessage> Run(
    HttpRequestMessage req,
    DurableOrchestrationClient starter,
    string functionName,
    ILogger log)
{
    // Function input comes from the request content.
    dynamic eventData = await req.Content.ReadAsAsync<object>();

    // Pass the function name as part of the route 
    string instanceId = await starter.StartNewAsync(functionName, eventData);

    log.LogInformation($"Started orchestration with ID = '{instanceId}'.");

    return starter.CreateCheckStatusResponse(req, instanceId);
}

Код активности также является стандартным кодом примера:

public static string Run(string name)
{
    return $"Hello {name}!";
}

Настройки службы приложений функций:

  1. Версия среды выполнения: ~3
  2. Платформа: 32 бит
  3. Версия управляемого конвейера: интегрированная

person Nomadeon    schedule 26.05.2020    source источник
comment
Можете ли вы обновить это, чтобы показать точный код в вашем проекте? Все функции называются «Выполнить», и у них нет атрибутов, что немного затрудняет определение проблемы.   -  person MarkXA    schedule 26.05.2020
comment
В образце кода по умолчанию нет ни атрибутов метода, ни окружающего определения класса. Единственные пропущенные строки — директивы «using» и «#r».   -  person Nomadeon    schedule 27.05.2020
comment
Взгляните на ответ Криса Г здесь stackoverflow.com/a/50411695/1123226   -  person DhruvJoshi    schedule 21.06.2020