Blazor SSR - 使用 docker (https-portal) 路由到不同页面时出现浏览器错误
Blazor SSR - Browser error when routing to different pages with docker (https-portal)
我目前正在尝试 运行 docker 中的 .NET core 3(预览版 8)SSR-blazor 项目。在您开始导航之前,页面似乎加载正常,使用 NavLink
,这在浏览器控制台中出现以下错误:
Error: There was an exception invoking 'NotifyLocationChanged' on
assembly 'Microsoft.AspNetCore.Components.Server'. For more details
turn on detailed exceptions in 'CircuitOptions.DetailedErrors'
我当前的 docker-compose.yml 文件如下所示:
version: '2'
services:
app:
build:
context: .
dockerfile: Dockerfile
depends_on:
- "database"
database:
image: "mcr.microsoft.com/mssql/server:2017-latest-ubuntu"
environment:
MSSQL_SA_PASSWORD: "Hidden"
ACCEPT_EULA: "Y"
https-portal:
image: steveltn/https-portal:1
ports:
- '80:80'
- '443:443'
links:
- app
restart: always
environment:
- WEBSOCKET: true
- DOMAINS: 'somesite.com -> http://app:5000'
# - STAGE: 'local'
- STAGE: 'staging'
# - STAGE: 'production'
我认为它与- WEBSOCKET: true
环境或代码中的app.UseForwardedHeaders();
有关。但是结果是一样的
编辑 1:
所以我在我的启动中添加了以下代码,它开始工作了:
services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders =
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
});
来自 https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-2.2
编辑 2:
没关系它停止工作了。似乎它只在第一次或长时间不活动后才有效。之后,我得到了同样的错误。
编辑 3:
所以我创建了一个具有相同 docker 结构的全新 Blazor(预览版 8)项目,奇怪的是它在这个项目中工作。我试着将这个新项目与我的(在预览版 5 中制作但随着时间的推移进行了升级)进行了比较,但是,我找不到任何重大的主要差异。我目前正在将一些旧代码迁移到新项目,看看它什么时候不再工作了。我希望这能给我答案,因为我现在完全迷路了。
我终于让它工作了。所以我不得不将以下内容添加到我的启动
app.Use((ctx, next) =>
{
ctx.Request.Scheme = "https";
return next();
});
现在路由完美无缺
我目前正在尝试 运行 docker 中的 .NET core 3(预览版 8)SSR-blazor 项目。在您开始导航之前,页面似乎加载正常,使用 NavLink
,这在浏览器控制台中出现以下错误:
Error: There was an exception invoking 'NotifyLocationChanged' on assembly 'Microsoft.AspNetCore.Components.Server'. For more details turn on detailed exceptions in 'CircuitOptions.DetailedErrors'
我当前的 docker-compose.yml 文件如下所示:
version: '2'
services:
app:
build:
context: .
dockerfile: Dockerfile
depends_on:
- "database"
database:
image: "mcr.microsoft.com/mssql/server:2017-latest-ubuntu"
environment:
MSSQL_SA_PASSWORD: "Hidden"
ACCEPT_EULA: "Y"
https-portal:
image: steveltn/https-portal:1
ports:
- '80:80'
- '443:443'
links:
- app
restart: always
environment:
- WEBSOCKET: true
- DOMAINS: 'somesite.com -> http://app:5000'
# - STAGE: 'local'
- STAGE: 'staging'
# - STAGE: 'production'
我认为它与- WEBSOCKET: true
环境或代码中的app.UseForwardedHeaders();
有关。但是结果是一样的
编辑 1:
所以我在我的启动中添加了以下代码,它开始工作了:
services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders =
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
});
来自 https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-2.2
编辑 2:
没关系它停止工作了。似乎它只在第一次或长时间不活动后才有效。之后,我得到了同样的错误。
编辑 3:
所以我创建了一个具有相同 docker 结构的全新 Blazor(预览版 8)项目,奇怪的是它在这个项目中工作。我试着将这个新项目与我的(在预览版 5 中制作但随着时间的推移进行了升级)进行了比较,但是,我找不到任何重大的主要差异。我目前正在将一些旧代码迁移到新项目,看看它什么时候不再工作了。我希望这能给我答案,因为我现在完全迷路了。
我终于让它工作了。所以我不得不将以下内容添加到我的启动
app.Use((ctx, next) =>
{
ctx.Request.Scheme = "https";
return next();
});
现在路由完美无缺