从 .NET 6 迁移到 .NET 8 后如何解决 Azure Function App 中的 HTTP 404 错误?

问题描述 投票:0回答:1

问题:

我最近将我的 Azure Function App 从 .NET 6 迁移到 .NET 8,最初一切都运行顺利。然而,一段时间后,我开始遇到多个 HTTP 404 错误,这在 24 小时内影响了超过 1,000 个请求。

我的问题的详细信息:

  • 迁移上下文:从.NET 6到.NET 8的迁移已完成,迁移后所有功能均正确执行。

  • 问题发生:一段时间后,我开始收到迁移前正常运行的各种端点的 404 Not Found 错误。

  • 影响:这些错误导致停机和糟糕的用户体验,在 24 小时内影响了超过 1,000 个请求。

  • 日志分析:我查看了API管理和功能日志,但无法确定根本原因。

我尝试过的:

  • 验证迁移过程并确保应用程序设置正确。

  • 查看 API 管理和功能日志是否存在差异。

  • 检查路由配置以确保它们与 .NET 8 的设置保持一致。

问题:

我希望迁移到 .NET 8 能够提高我的 Azure Function App 的性能和可靠性。相反,我遇到了 .NET 6 中不存在的 HTTP 404 错误激增。

这是我的一个 Azure Functions 的简化代码片段:

[FunctionName("MyFunction")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "myendpoint/{id}")] HttpRequest req, 
    ILogger log, 
    string id)
{
    log.LogInformation("Processing request for ID: " + id);

    if (string.IsNullOrEmpty(id))
    {
        return new BadRequestObjectResult("ID is required.");
    }

    // Simulate processing the request
    var result = await SomeService.ProcessAsync(id);
    
    if (result == null)
    {
        return new NotFoundResult(); // This is where the 404 error occurs
    }

    return new OkObjectResult(result);
}

host.json:

{
  "version": "2.0",
  "functionTimeout": "00:10:00"
}

local.settings.json:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
  }
}

日志:

以下是记录的 404 错误的示例:

/myendpoint/1234 的 HttpRequest 失败,状态代码为 404

预期行为:

当使用有效的

id
调用该函数时,我希望它返回 200 OK 响应以及处理后的结果。然而,迁移后,许多有效请求会导致 404 错误。

.net azure azure-functions migration http-status-code-404
1个回答
0
投票

您仍在使用旧的 .NET 6 进程内函数中的所有方法和属性。对 .NET 8 隔离的更改具有一组完全不同的属性。您的代码中可能还存在其他问题,也需要修复。

例如,你有这个:

[FunctionName("MyFunction")]

但是在独立的.NET 8中,属性会有所不同:

[Function("MyFunction")]

这可以解释为什么你会得到 404。可能你没有定义任何工作函数,因为属性是错误的。还可能存在其他问题,例如您如何初始化应用程序。

这里是开始了解 .NET 8 隔离要求的好地方:https://learn.microsoft.com/en-us/azure/azure-functions/dotnet-isolated-process-guide?tabs=windows #aspnet-core-集成

© www.soinside.com 2019 - 2024. All rights reserved.