По умолчанию в Durable Function имеются ошибки. Azure .WebJobs.Host: Невозможно связать параметр 'starter' - PullRequest
0 голосов
/ 04 февраля 2020

Я только начал работать с Azure функциями, особенно с функциями длительного пользования.

Я работаю над https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-create-first-csharp

Я добавил новый azure долговременная функция и код по умолчанию, показанный ниже.

Я увидел, что мои библиотеки - это долговечная функция версии 2, поэтому мне пришлось внести пару изменений в имена классов, чтобы ее разрешить (ссылка приведена выше ссылка, которая обсуждает изменения):

    [FunctionName("TestFunction")]
    public static async Task<List<string>> RunOrchestrator(
        [OrchestrationTrigger] IDurableOrchestrationContext context)
    {
        var outputs = new List<string>();

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

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

    [FunctionName("TestFunction_Hello")]
    public static string SayHello([ActivityTrigger] string name, ILogger log)
    {
        log.LogInformation($"Saying hello to {name}.");
        return $"Hello {name}!";
    }

    [FunctionName("TestFunction_HttpStart")]
    public static async Task<HttpResponseMessage> HttpStart(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")]HttpRequestMessage req,
        [OrchestrationClient]IDurableOrchestrationClient starter, ILogger log)
    {
        // Function input comes from the request content.
        string instanceId = await starter.StartNewAsync("TestFunction", null);

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

        return starter.CreateCheckStatusResponse(req, instanceId);
    }

Когда я запускаю это локально, он запускает эмулятор хранилища, но затем я получаю пару ошибок:

Microsoft. Azure .WebJobs.Host : Ошибка индексации метода «TestFunction_HttpStart». Microsoft. Azure .WebJobs.Host: Невозможно привязать параметр 'starter' к типу IDurableOrchestrationClient. Убедитесь, что параметр Type поддерживается привязкой. Если вы используете расширения привязки (например, Azure Storage, ServiceBus, Timers и т. Д. c.), Убедитесь, что вы вызвали метод регистрации для расширения (ей) в своем коде запуска (например, builder.AddAzureStorage () , builder. Microsoft. Azure .WebJobs.Host: Невозможно привязать параметр 'starter' к типу IDurableOrchestrationClient. Убедитесь, что параметр Type поддерживается привязкой. Если вы используете связывающие расширения (например, Azure Storage, ServiceBus, Timers и т. Д. c.), Убедитесь, что вы вызвали метод регистрации для расширения (ей) в своем коде запуска (например, builder.AddAzureStorage () , builder.AddServiceBus (), builder.AddTimers (), et c.).

Почему эти ошибки отображаются в тестовом коде по умолчанию и как его исправить?

1 Ответ

1 голос
/ 14 февраля 2020

Вы пропустили изменение атрибута OrchestrationClient на DurableClient, как указано в миграции c --- OrchestrationClientAttribute в 1.x на DurableClientAttribute в 2.x

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...