已到达 Azure 端点,但调用 API 返回 404 错误

标签 azure api azure-web-app-service

我们已在 Azure 门户中设置了一个应用服务项目,然后使用 Visual Studio DevOps 完成了该项目的部署。当我去 http://MyAzureSite.azurewebsites.net (此处填写 URL),我可以确认该服务已启动并正在运行。

但是当我添加“api/ControllerName/getStatus”时,我收到 404 错误。

从我的本地计算机进行的调用工作正常。

http://localhost:52686/api/status/getStatus

但不是:

http://MyAzureSite.azurewebsites.net/api/status/getstatus

GetStatus 的签名看起来不错:

[HttpGet]
public List<Status> GetStatus()

最佳答案

我们在最新的 .NET Core 3.1 LTS 版本中也遇到了同样的问题。我们发现了多种可能导致此问题的原因。以下是我们的发现:

  1. API 端点应扩展 ControllerBase 而不是 Controller:

API Controller extending ControllerBase

ControllerBase 创建一个不支持 View 的 Controller 。 Controller 用于 View 支持。我们有一个 API 端点,当部署在 Azure 中时,如果它正在扩展 Controller 并且没有 View ,则无法访问该端点。没有错误或任何东西。只是无法到达。

  • 确保应用服务配置为正确的堆栈。我们的 Web API 使用 .NET Core 3.1。如果您从 Visual Studio 创建它,则可能会配置错误的堆栈。我们的 Visual Studio 2019 默认将其配置为 3.0 EOL。当我们将其更改为 3.1 时,一切又恢复正常了。
  • Azure Portal Configuration

  • 使用默认配置无法从 Azure 门户进行创建。
  • 如果您通过 Azure 门户创建应用服务/Web 应用,您首先将无法访问任何端点。我们不确定这是为什么,但我们想出了如何让它再次发挥作用。转到应用服务的配置并按照以下步骤操作:

    1. 关闭“始终开启”
    2. 保存并等待设置应用
    3. 开启“始终开启”
    4. 保存并等待设置应用

    Number Labeled Configuration Steps

    现在您应该能够再次访问您的 API 端点

    这些是我们遇到的一些问题以及解决方案。希望它们能帮助你们,让你们免于“我们修好了!”的日子。只是为了让它因另一个未知的原因再次停止工作。当我发现更多破坏 API 和应用服务的内容以及找到它们的解决方案时,我将更新此答案。

    关于已到达 Azure 端点,但调用 API 返回 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55012289/

    相关文章:

    javascript - 从 fetch() 返回 html 并显示给用户

    php - 为azure windows web应用程序terraform设置php版本时出错

    c# - 查询Azure Web Apps版本号

    api - Curl POST上传文件测试

    azure - 从 powershell/azure devops 触发 azure Webjob

    azure - Azure 媒体服务是否可以用于覆盖每个人都不同的自定义水印?

    sql - 如何在文件名更改的情况下批量插入

    php - 检索单个/多个附件 Gmail API PHP

    azure - 停止 Azure 站点 Web 作业

    git - 如何将 tfvc 迁移到 Git(包括历史记录)