已达到Azure终结点,但对API的调用返回404错误

时间:2019-03-05 22:01:58

标签: 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()

2 个答案:

答案 0 :(得分:1)

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

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

API Controller extending ControllerBase

ControllerBase创建一个没有视图支持的控制器。控制器用于视图支持。我们有一个API终结点,如果它正在扩展Controller并且没有视图,则在Azure中部署时将无法访问它。没有错误或任何东西。只是无法达到。

  1. 确保为正确的堆栈配置了App Service。我们的Web API使用.NET Core 3.1。如果您是从Visual Studio创建的,则可能是为错误的堆栈配置了它。默认情况下,我们的Visual Studio 2019将其配置为3.0 EOL。当我们将其更改为3.1时,事情又恢复了。

Azure Portal Configuration

  1. 从Azure门户进行创建不适用于默认配置。

如果通过Azure门户创建App Service / Web App,则一开始将无法访问任何终结点。我们不确定为什么会这样,但是我们想出了使它重新运行的方法。转到App Service的配置,然后执行以下步骤:

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

Number Labeled Configuration Steps

现在您应该可以再次访问API端点

这些是我们遇到的一些问题以及解决方案。希望他们能够帮助您,并从“我们解决问题”的日子中拯救您。只是因为另一个未知原因使它停止工作。当我发现更多破坏API和App Services的东西以及找到针对它们的解决方案时,我将更新此答案。

答案 1 :(得分:0)

我们不得不再次正确地重建项目,其创建方式不正确。