首页 > 解决方案 > Http Trigger Azure函数随机返回404

问题描述

我们在函数运行时 3 上有一个 .net 核心 azure 函数。它在本地运行得非常好,而且大部分时间都在我们部署的应用程序服务上运行。但是,对于在其他时间完全正常的请求,我们遇到了间歇性的 404 响应。

对于失败的请求,我们的日志或应用程序洞察遥测中没有出现任何条目。

感觉很像 azure-function-host github 项目中的这个问题: https ://github.com/Azure/azure-functions-host/issues/5247 尽管这是针对函数运行时 1 或 2。

有没有人有类似的问题或知道任何方式来获取可能突出我们遇到的问题的额外日志信息。

标签: azureazure-functionshttp-status-code-404serverless

解决方案


这可能发生在横向扩展或您的函数应用程序将服务器从一个更改为另一个(出于某种原因)期间。这实际上是无服务器应用程序的缺点。

但我能给你的建议是:

  • 创建与此类似的 HeartBeat 函数:

    private readonly IAsyncRepository<Business> _businessAsyncRepository;
    
    public HeartBeat(IAsyncRepository<Business> businessAsyncRepository)
    {
        // Your all DI injections are here
        _businessAsyncRepository = businessAsyncRepository;
    }
    
    [FunctionName(nameof(HeartBeat))]
    public async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
        ILogger log)
    {
        string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
        dynamic data = JsonConvert.DeserializeObject(requestBody);
        return new OkObjectResult("OK");
    }
    

然后在 Application Insights 上创建可用性测试并调用 HeartBeat。

在此处输入图像描述

这也将始终为您提供一个温暖的 Azure Functions 实例。但显然,您每次调用心跳时都会将 100 万免费通话用于消费计划,具体取决于您调用 AF 的频率。


推荐阅读