Skip to content

Azure Functions return a 500 if request is too large (HTTP trigger) #10519

@bastbu

Description

@bastbu

Check for a solution in the Azure portal

Azure Functions have a configurable request size limit for HTTP triggers. The behavior of Kestrel, when a too large payload is encountered, is to return a 413, which indicates to the client that the issue is a too large request on the client side and cannot be retried.

Azure Functions have an internal behavior that masks this error, and returns a status code 500 instead, along with the following internal error messages, when I configure an Azure Function (tested with both Python and C#, as well as locally and in the cloud) with FUNCTIONS_REQUEST_BODY_SIZE_LIMIT=10:

Microsoft.Azure.WebJobs.Host: Exception binding parameter 'req'. Microsoft.AspNetCore.Server.Kestrel.Core: Request body too large. The max request body size is 10 bytes.

Investigative information

Please provide the following:

  • Timestamp: 10/9/2024, 1:30:44.082 PM
  • Function App version: 4.34.2.2
  • Function App name: -
  • Function name(s) (as appropriate): trigger
  • Invocation ID: 399cedc7-3aa2-4f08-8797-26689bcd9600
  • Region: West Europe

Repro steps

  1. Create a new HTTP-triggered function (either in C# or Python)
  2. Configure FUNCTIONS_REQUEST_BODY_SIZE_LIMIT to a low value, e.g. 10
  3. Execute a request against the HTTP endpoint with a payload larger than 10 bytes

Expected behavior

Azure Functions should return a 413 (and not print an error, as it's an expected condition).

Actual behavior

Azure Functions raise an internal exception and report a 500 to the client.

Known workarounds

I don't know of any workarounds for this.

Related information

  • Programming language used - Python/C#
  • Bindings used - HTTP

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions