Azure Function Post C# not executing with big body

Viewed 248

I'm currently implementing an Azure Function App that exposes a few Functions (mostly gets).

The following code seems to have an issue:

using System;
using System.Collections.Specialized;
using System.Net;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
using System.Net.Http;
using InternalVacanciesAzureFunction.Model;
using Microsoft.Extensions.Options;
using System.Text.Json;
using System.Collections.Generic;

namespace IVAFunction
{
    public class PostFunction
        {
            private readonly HttpClient _httpClient;
    
            public PostFunction(IHttpClientFactory httpClientFactory)
            {
                _httpClient = httpClientFactory.CreateClient();
            }
    
            [Function("postFunction")]
            public HttpResponseData Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", "put")] HttpRequestData req,
                FunctionContext executionContext)
            {
                ILogger logger = executionContext.GetLogger("PostFunction");
                logger.LogError("Code hit: PostFunction.cs");
               
                HttpResponseData response = req.CreateResponse();
                
                string body = new System.IO.StreamReader(req.Body).ReadToEnd();
    
                JsonResponse data = Nfunction.postFunction(_httpClient, "/PostFunction", body, logger, requestPrincipalName);
                if (data.responseType.Equals(ResponseType.OK))
                {
                    response.StatusCode = HttpStatusCode.OK;
                }
                else
                {
                    response.StatusCode = HttpStatusCode.InternalServerError;
                }
    
                response.Headers.Add("Content-Type", "application/json; charset=utf-8");
                response.WriteString(data.json);
    
                return response;
            }
        }
    }

The data that is posted to this function is a JSON including a BASE64 encoded string in two of the fields. The max size for each of those two fields is 1.5MB. Everytime I post something small e.g. 2 x 400B, everything goes fine. But when I sent something like 2 x 900kB the logging show up like this:

2021-12-07T07:42:28.455 [Debug] Request successfully matched the route with name 'postFunction' and template 'api/postFunction'

2021-12-07T07:42:29.129 [Information] Executing 'Functions.postFunction' (Reason='This function was programmatically called via the host APIs.', Id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx)

The "Code hit" logger code is never hit and after a while the function times out.

Anyone having a clue what is going on? I can reproduce the issue on both my local dev environment as well on actual Azure.

1 Answers

You got a lot of missing directives or assembly references there except for that the last } is unnenecessary.

Related