我们已在 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 版本中也遇到了同样的问题。我们发现了多种可能导致此问题的原因。以下是我们的发现:
- API 端点应扩展 ControllerBase 而不是 Controller:
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 门户进行创建。
如果您通过 Azure 门户创建应用服务/Web 应用,您首先将无法访问任何端点。我们不确定这是为什么,但我们想出了如何让它再次发挥作用。转到应用服务的配置并按照以下步骤操作:
- 关闭“始终开启”
- 保存并等待设置应用
- 开启“始终开启”
- 保存并等待设置应用
现在您应该能够再次访问您的 API 端点
这些是我们遇到的一些问题以及解决方案。希望它们能帮助你们,让你们免于“我们修好了!”的日子。只是为了让它因另一个未知的原因再次停止工作。当我发现更多破坏 API 和应用服务的内容以及找到它们的解决方案时,我将更新此答案。
关于已到达 Azure 端点,但调用 API 返回 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55012289/