首页 > 解决方案 > 逻辑应用程序 - 通过 HTTP 发布大型消息的最简单方法

问题描述

我有一个逻辑应用程序,它试图向 HTTP 端点发布一条大消息,但出现错误:

在此处输入图像描述

有没有简单的方法来增加超时?还是一种将大型消息发布到 HTTP 端点的简单方法?

我知道默认限制:

在此处输入图像描述

我也尝试过分块,但仍然是同样的问题。

标签: azure-logic-apps

解决方案


1.也许您可以创建一个Azure 持久函数作为您的 Http 端点:

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.DurableTask;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;

namespace FrankDurableFunction
{
    public static class Function1
    {
        [FunctionName("Function1")]
        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>("Function1_Hello", "Tokyo"));
            //outputs.Add(await context.CallActivityAsync<string>("Function1_Hello", context.GetInput<ProcessRequest>()));

            return outputs;
        }

        [FunctionName("Function1_Hello")]
        public static string SayHello([ActivityTrigger] string name, ILogger log)
        {
            log.LogInformation($"Saying hello to {name}.");
            Thread.Sleep(TimeSpan.FromMinutes(3));
            return $"Hello {name}!";
        }

        [FunctionName("Function1_HttpStart")]
        public static async Task<HttpResponseMessage> HttpStart(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestMessage req,
            [DurableClient] IDurableOrchestrationClient starter,
            ILogger log)
        {
            //ProcessRequest requestData = await req.Content.ReadAsAsync<ProcessRequest>();
            // Function input comes from the request content.
            //string instanceId = await starter.StartNewAsync("Function1", requestData);

            string instanceId = await starter.StartNewAsync("Function1", null);

            log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
            var response = starter.CreateCheckStatusResponse(req, instanceId);
            response.Headers.RetryAfter = new RetryConditionHeaderValue(TimeSpan.FromSeconds(10));
            return response;
        }
    }
    public class ProcessRequest
    {
        public string data { get; set; }
    }
}

2.开启设置Asynchronous Pattern_Http

在此处输入图像描述

我做了一个测试,结果似乎没有问题。

在此处输入图像描述


推荐阅读