Azure App Gateway 后面的 ServiceStack 元数据重定向不起作用

ServiceStack Metadata Redirect behind a Azure App Gateway not working

我的 api 作为应用服务托管在 Azure 上,其前面有一个 Azure 应用网关。

我在我的启动程序中设置了 webhosturl,当我查看元数据页面时,它正在工作,我看到指向正确位置的链接。这些链接有效。但是,当我导航到我的 api 的基础 url 时,它会将我重定向到应用程序服务 url。

这是我创业的片段...

        SetConfig(new HostConfig
        {
            WebHostUrl = "https://api-dev.hsawaknow.net/link/",
            DefaultRedirectPath = "/metadata",
            DebugMode = AppSettings.Get(nameof(HostConfig.DebugMode), false)
        });

请查看下面的链接并查看不同之处。

https://api-dev.hsawaknow.net/link/metadata

https://api-dev.hsawaknow.net/link/

在我弄清楚之前,您会收到一个 https 错误,因为我使用的是自签名证书。我看到其他帖子说要进行此更改并且有效,但对我来说不是。

请帮忙!

启用 Request Logger 以便您可以查看 ServiceStack 收到的请求。

不指定 WebHostUrl 时是否有效?

我想通了。我必须做几件事。

我必须做的第一件事是设置转发的 headers 中间件以识别和处理来自 Azure 应用程序网关的正确 headers。

        services.Configure<ForwardedHeadersOptions>(options =>
        {
            options.ForwardedHostHeaderName = "X-ORIGINAL-HOST";
            options.ForwardedHeaders = ForwardedHeaders.XForwardedHost | ForwardedHeaders.XForwardedProto | ForwardedHeaders.XForwardedFor;
        });

这使我的站点无需设置 WebHostUrl 即可使用指向正确页面的链接。使用 Azure App Gateway 的唯一注意事项是它使用 X-ORIGINAL-HOST 而不是标准的 X-FORWARDED-HOST。

接下来,我必须根据 appsettings.json 中的设置在 HostConfig 上动态设置 DefaultRedirectPath。对于 Azure App Gateway,我的 public url 是 https://api-dev.hsawaknow.net/link/,我必须将重定向设置为 /link/metadata,而不仅仅是元数据,因为主机header 已在上一步设置。

尝试了几次,但在以 Azure 应用程序网关为前端的 Azure 应用服务上托管时,此配置运行良好。

感谢 mythz 的快速响应,这为我指明了正确的方向。