Blazor WASM部署Ubuntu报错:Linux不支持JavaScript问题求助
解决Blazor WASM在Linux服务器执行
dotnet ProjectName.dll报“Linux不支持JavaScript”的问题 问题核心原因
Blazor WASM是纯客户端应用,所有代码(包括C#编译的WASM和关联JS逻辑)都在用户浏览器中运行。你直接在Linux服务器上执行dotnet ProjectName.dll是错误操作:这个dll是Blazor WASM的发布工具链产物,并非服务器端可执行程序,运行它会尝试在Linux环境(无浏览器JS引擎)中执行客户端JS逻辑,因此触发报错。
正确部署方案
方案1:部署到静态文件服务器(推荐,适合纯前端WASM应用)
- 执行发布命令后,找到输出目录下的
wwwroot文件夹(路径示例:bin/Release/net8.0/linux-x64/publish/wwwroot) - 将
wwwroot内的所有文件复制到Linux服务器的静态文件目录,比如Nginx默认的/var/www/blazor-app - 配置Nginx支持SPA路由(避免刷新页面404),示例配置:
server { listen 80; server_name your-server-ip; root /var/www/blazor-app; index index.html; location / { try_files $uri $uri/ /index.html; } } - 重启Nginx生效:
sudo systemctl restart nginx - 用浏览器访问服务器IP/域名,应用会在客户端加载运行,JS逻辑正常执行。
方案2:ASP.NET Core托管(适合需要和后端API一起部署的场景)
- 创建一个ASP.NET Core空项目作为托管载体
- 在托管项目中添加对Blazor WASM项目的引用
- 修改托管项目的
Program.cs,添加静态文件托管和SPA路由支持:var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages(); var app = builder.Build(); app.UseHttpsRedirection(); app.UseStaticFiles(); // 托管Blazor WASM静态文件 app.UseRouting(); app.MapFallbackToFile("index.html"); // 处理SPA路由 app.Run(); - 发布托管项目:
dotnet publish -c Release -r linux-x64 --self-contained - 运行托管项目的dll:
dotnet HostProjectName.dll,服务器会启动Web服务,将Blazor WASM文件提供给浏览器,JS在客户端运行。
额外注意事项
- 纯Blazor WASM项目无需指定
-r linux-x64和--self-contained发布参数,发布产物是跨平台的静态文件,直接部署即可。 - 确保你的独立API项目已正确部署为Linux服务,Blazor WASM在浏览器中通过HTTP请求与API通信,两者完全独立运行。
内容的提问来源于stack exchange,提问作者Draq
相关产品推荐
相关产品推荐

