Несмотря на исключение в функции активности, статус выполнения завершается вместо сбоя - PullRequest
0 голосов
/ 05 марта 2020

В моем коде AzureFunction, если в моей деятельности возникла исключительная функция, я все еще вижу runTimeStatus=Completed, но в такой ситуации мне бы хотелось иметь runTimeStatus=Failed. Что мне делать?

вот мой код:

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

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

            return starter.CreateCheckStatusResponse(req, instanceId);
        }

 [FunctionName("Durable_Orchestrator")]
        public static async Task RunOrchestrator(
            [OrchestrationTrigger] DurableOrchestrationContext context, TraceWriter log)
        {
            try
            {
                await context.CallActivityAsync<string>("Durable_Activity", "0");
            }
            catch (Exception e)
            {
                log.Info("ErrorOrchestrator");

            }
        }

        [FunctionName("Durable_Activity")]
        public static void DurableActivity([ActivityTrigger] string name, TraceWriter log)
        {
            try
            {
                logger = log;
                DoSomething(logger);
            }
            catch (Exception ex)
            {
                log.Info("ErrorActivity");

            }
        }

1 Ответ

0 голосов
/ 05 марта 2020

просто выбросить исключение в вашей Durable_Activity:

[FunctionName("Durable_Starter")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")]HttpRequest req,
    [DurableClient] IDurableClient starter,
    ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    string instanceId = await starter.StartNewAsync("Durable_Orchestrator", request);

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

    var checkStatusResponse = starter.CreateCheckStatusResponse(req, instanceId);

    return checkStatusResponse;
}



 [FunctionName("Durable_Orchestrator")]
        public static async Task RunOrchestrator(
            [OrchestrationTrigger] DurableOrchestrationContext context, TraceWriter log)
        {
        try
        {
            await context.CallActivityAsync<string>("Durable_Activity", "0");
        }
        catch (Exception e)
        {
            log.Info("ErrorOrchestrator");
            throw;
        }
        }

        [FunctionName("Durable_Activity")]
        public static void DurableActivity([ActivityTrigger] string name, TraceWriter log)
        {
            try
            {
                logger = log;
                DoSomething(logger);
            }
            catch (Exception ex)
            {
                log.Info("ErrorActivity");
                throw;
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...