I run a HttpTrigger Azure Function which runs above 5 seconds. Locally it works like a charm but deployed it returns "(500) Internal Server Error".
EDIT: It only happens if I deploy it to a FunctionApp with Private Endpoints enabled.
Steps to reproduce (fails):
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
using System.Threading;
using System.Threading.Tasks;
namespace MyTest.TestFunction
{
public class TestFunction
{
[FunctionName("TestFunction")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log)
{
log.LogInformation("Before sleep");
Thread.Sleep(7000);
log.LogInformation("After sleep");
return new OkObjectResult($"Hello");
}
}
}
Steps to reproduce (works):
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
using System.Threading;
using System.Threading.Tasks;
namespace MyTest.TestFunction
{
public class TestFunction
{
[FunctionName("TestFunction")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log)
{
log.LogInformation("Before sleep");
Thread.Sleep(2000);
log.LogInformation("After sleep");
return new OkObjectResult($"Hello");
}
}
}
My host.json looks like this:
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
}
},
"functionTimeout": "00:15:00",
}
FYI: The non-test function does not use sleep but just takes longer then 5 seconds.
2
Answers
The
500
error is not helpful to solve this problem, you need to check the specific error of the azure function. You can use Application Insights to get more details. The function must configure the corresponding application insights before you can view the log on the portal.Also, try to add the extension bundle property to your
host.json
file, like so:I’ve created an Azure Httptrigger Function in local and ran successfully as shown below:
I deployed it to the Azure portal and got the following error:
As per above error, I made changes in
host.json
file as "Microsoft.Azure.WebJobs.Script.FunctionTimeout must be greater than 00.00.01 and less than 00.10.00" :host.json:
After making changes in
host.json
only, I deployed it to Azure again and received 200 OK response by setting:Thread.Sleep(7000);
Thread.Sleep(2000);