Blazor WASM样式在使用nginx托管在docker中时丢失

ddrv8njm  于 2023-08-03  发布在  Nginx
关注(0)|答案(3)|浏览(154)

我有一个奇怪的问题,当我尝试使用Nginx托管我的Blazor WASM项目时,我的样式被破坏了。我试着遵循几个不同的指南,他们是相似的,对我来说也有同样的问题。
代码在这里:https://github.com/TopSwagCode/Dotnet.IdentityServer/tree/master/src/BlazorClient
当我在本地调试或在本地发布并从dotnet服务器提供服务时,我会得到以下结果:


的数据
但是当我发布并尝试使用Nginx在docker中运行它时,我得到了这样的结果:



我的纽扣还在,但我看不见它们,因为它们是白色的。
我的dockerfile很简单:

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
WORKDIR /app
COPY . ./
RUN dotnet publish -c Release -o output
FROM nginx:alpine
WORKDIR /var/www/web
COPY --from=build-env /app/output/wwwroot .
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80

字符串
我的nginx配置

events { }
http {
    include mime.types;
    types {
        application/wasm wasm;
    }

    server {
        listen 80;

        # Here, we set the location for Nginx to serve the files
        # by looking for index.html
        location / {
            root /var/www/web;
            try_files $uri $uri/ /index.html =404;
        }
    }
}


我找不到任何“未找到”或类似的网络选项卡。
编辑:
当比较两个并行运行时,我无法找到线性渐变的CSS,这是菜单的紫色边。深入挖掘一下,似乎MainLayout.razor.css中的所有CSS都没有找到。
https://github.com/TopSwagCode/Dotnet.IdentityServer/blob/master/src/BlazorClient/Shared/MainLayout.razor.css
在本地运行时:



使用Docker+Nginx运行时



在我看来,CSS不知何故丢失了???
编辑二:
CSS的构建散列在部署后似乎不匹配。所以我发现我的页面上链接的CSS文件如下所示:



但我的HTML不匹配。它看起来像这样:



不知道在Docker+Nginx的构建和部署过程中如何打破?我的dockerfile中有什么地方做错了吗???

wn9m85ua

wn9m85ua1#

我以前也遇到过这个问题。删除你的bin和obj文件夹。似乎有一些缓存问题,在作用域css中生成的作用域在调试和发布之间不匹配。

rqdpfwrv

rqdpfwrv2#

经过长时间的调试这个问题,我终于得到了它的工作。我发现这个项目:https://github.com/waelkdouh/DockerizedClientSideBlazor/并开始比较。我能看到的唯一不同的是,他有一个。dockerignore我做了一个副本,这一切都开始工作。不知道是什么问题。看不出列出的任何文件如何破坏CSS.....

rsl1atfo

rsl1atfo3#

通过dockerignore排除bin和obj文件夹通过 .dockerignore 排除 binobj 文件夹,应该可以解决此问题。

在.dockerignore文件中添加:

# Exclude build artifacts
**/bin/
**/obj/

字符串

**注意:**添加此选项后,仍可能出现问题。然后,您可以尝试以下操作:
清除docker构建缓存Docker可能缓存了一些层。你可以在docker构建中添加 --no-cache 来确保没有使用缓存的图层

docker build --no-cache {other docker build flags here}

考虑浏览器缓存同时确保您的浏览器缓存已被清除(或以浏览器隐身模式打开,以确保“旧”css不在浏览器中缓存)。这很容易被忘记,然后它仍然看起来像css没有正确加载。
清除本地项目信息如果所有这些都不起作用,您还可以尝试对您的项目/解决方案进行 clean,并删除WASM项目的 obj和bin 文件夹。

相关问题