You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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应用)

  1. 执行发布命令后,找到输出目录下的wwwroot文件夹(路径示例:bin/Release/net8.0/linux-x64/publish/wwwroot)
  2. 将wwwroot内的所有文件复制到Linux服务器的静态文件目录,比如Nginx默认的/var/www/blazor-app
  3. 配置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;
        }
    }
    
  4. 重启Nginx生效:sudo systemctl restart nginx
  5. 用浏览器访问服务器IP/域名,应用会在客户端加载运行,JS逻辑正常执行。

方案2:ASP.NET Core托管(适合需要和后端API一起部署的场景)

  1. 创建一个ASP.NET Core空项目作为托管载体
  2. 在托管项目中添加对Blazor WASM项目的引用
  3. 修改托管项目的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();
    
  4. 发布托管项目:dotnet publish -c Release -r linux-x64 --self-contained
  5. 运行托管项目的dll:dotnet HostProjectName.dll,服务器会启动Web服务,将Blazor WASM文件提供给浏览器,JS在客户端运行。

额外注意事项

  • 纯Blazor WASM项目无需指定-r linux-x64和--self-contained发布参数,发布产物是跨平台的静态文件,直接部署即可。
  • 确保你的独立API项目已正确部署为Linux服务,Blazor WASM在浏览器中通过HTTP请求与API通信,两者完全独立运行。

内容的提问来源于stack exchange,提问作者Draq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:15:57