gpt4 book ai didi

azure - Azure 中应用程序服务的应用程序初始化不起作用

转载 作者:行者123 更新时间:2023-12-03 02:13:37 25 4
gpt4 key购买 nike

我们在 Azure 中有一个应用服务,配置为最多 8 个实例,每次部署时,我们都会在可用性和性能(诊断)下看到重新启动事件。

我们还观察到大量 5xx 错误正在发生。到目前为止,我们的分析是请求被路由到刚刚启动的冷实例,这些都是失败的原因。

我找到了本指南 -> https://azure.github.io/AppService/2020/05/15/Robust-Apps-for-the-cloud.html并遵循应用程序初始化建议。

因此,我添加了

<applicationInitialization >
<add initializationPage="/healthcheck"/>
</applicationInitialization>

到 web.config

我重新启动了应用服务并向应用发送了一些测试请求。在 Application Insights 中,我可以看到正在调用运行状况端点 - 因此应用程序初始化逻辑正在启动。但是,它正在调用 http://localhost/healthcheck 并返回 307。

我查看了 307 及其原因,它返回 307,因为应用程序服务配置为仅使用 https 协议(protocol)运行,但 http://localhost 不是 https,因此服务正在重定向。

我需要做什么才能使用 https 协议(protocol)调用应用服务。

我尝试在应用程序初始化 block 中添加完整的应用程序 URL,但随后我可以看到

http://localhost/https://app-service-name.azurewebsites.net/healthcheck 被调用 - 这更糟糕。

我做错了什么?

最佳答案

我假设您的应用程序运行 ASP.NET Core。正如另一个答案中提到的,应用程序初始化仅支持 HTTP,因此您需要使其工作。我们所做的是:

/// </summary>
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...

// IIS App initialization requires HTTP
app.UseWhen(
context => !WarmupController.IsWarmupRoute(context.Request.Path),
mainApp => mainApp.UseHttpsRedirection()
);

WarmupController.IsWarmupRoute 基本上只包含 StartsWith 检查。

这样,您仅允许针对预热/运行状况检查路由的 HTTP 请求。无需调整 web.config 或 AppService 设置。

关于azure - Azure 中应用程序服务的应用程序初始化不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72297070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com