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 的快速响应,这为我指明了正确的方向。
我的 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 的快速响应,这为我指明了正确的方向。