繁体   English   中英

使用 Api 管理服务发布 Azure function 应用程序 -- 无法在 Azure 中更新您的 API(状态代码:BadRequest)

[英]Publishing Azure function app with Api Management service -- Failed to update your API in Azure (Status code: BadRequest)

我有一个 Azure function 应用程序,它使用在本地运行的 api 管理服务。 我使用 Visual Studio 2022 创建它。但是当我尝试发布它时,一切看起来都很好,直到出现此错误。

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========
Waiting for function app to be ready...
Finished waiting for function app to be ready
Starting to update your API
Failed to update your API in Azure (Status code: BadRequest).

该应用程序创建在资源组下,但不是 api 管理服务。 并生成分析文件。

Microsoft.WebTools.Shared.Exceptions.WebToolsException: Failed to update your API in Azure (Status code: BadRequest).

   at Microsoft.WebTools.Azure.Publish.ApiMApi.BaseApiMApiUpdater.EmitTerminatingError(String bucketName, String displayedErrorMessage, String loggedErrorMessage)
   at Microsoft.WebTools.Azure.Publish.ApiMApi.BaseApiMApiUpdater.<UpdateApiMApiInAzureAsync>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.WebTools.Azure.Publish.ApiMApi.FunctionAppApiMApiPublishHandler.FunctionApiMApiUpdater.<ImportSwaggerLinkToApiMAppAsync>d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.WebTools.Azure.Publish.ApiMApi.FunctionAppApiMApiPublishHandler.FunctionApiMApiUpdater.<RunUpdateAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.WebTools.Azure.Publish.ApiMApi.BaseApiMApiUpdater.<RunUpdateWithTelemetryAsync>d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.WebTools.Azure.Publish.ApiMApi.FunctionAppApiMApiPublishHandler.<UpdateApiMApiAsync>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.WebTools.Azure.Functions.PublishProviders.AzureFunctionProfileVisual.<FunctionsAfterPostPublishAsync>d__42.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Publish.Framework.Nexus.PublishProfilesServiceImpl.ServerProjectProfilesManager.
<RunPublishTaskAsync>d__56.MoveNext()

=================== 

我还尝试删除所有内容并重试,这次我在发布时创建了 api 管理服务。 和之前一样创建了app,但是没有创建api管理服务。

如果您使用 Azure Function OpenAPI 模板,则需要确保每个 Function 在 OpenApiOperation 属性中都有唯一的 operationId。

默认情况下,对于新的 function,operationId 设置为“Run”,将其更改为唯一值可修复发布时的错误请求

[OpenApiOperation(operationId: "UniqueOperationId", tags: new[] { "name" })]

您可以通过查看 Azure 门户中的日志来验证导致错误请求的原因

导航到资源组 --> 活动日志。 从这里您应该能够看到创建 API 或更新 API的失败尝试。

资源组活动日志

Select 失败的尝试并查看打开的面板中的 JSON 选项卡,底部附近应该是错误请求的原因

前任:

BadRequest OpenApi operationId

这是我为发布 Azure Function -.Net Stack - Http Trigger with Open API 所做的解决方法。

  • 创建了 Azure 函数(.Net 3.1 Stack - Http Trigger with Open API)并获得了将名称作为查询参数并发送结果的样板代码。
  • 通过从 Visual Studio 创建 Azure Functions App 实例和 Azure APIM 实例发布它 Publish Window 并成功。

在此处输入图像描述

  • 通过删除名称参数并显示自定义响应消息来修改样板代码。
  • 将更新后的 function 代码发布到 Azure APIM 并成功更新 API。

在此处输入图像描述

笔记:

Microsoft.WebTools.Shared.Exceptions.WebToolsException: Failed to update your API in Azure (Status code: BadRequest).

至少据我所知,当 Visual Studio 有当前更新时会发生此错误。

我猜这个错误与构建问题或运行时错误有关。

要解决此错误,请按照以下步骤操作:

  1. 如果构建被卡住,则停止或取消构建应用程序。
  2. 确保保存更改
  3. 关闭 Visual Studio 并再次打开您的项目。
  4. 当项目加载到 Visual Studio 中时,清理解决方案
  5. 然后构建解决方案
  6. 构建解决方案后,如果需要,请提前拨打 go 并发布。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM