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

Linux运行Uno WebAssembly触发ECall methods相关SecurityException如何解决

异常产生原因
  • 你当前的操作本质是将Uno WebAssembly(WASM)项目的构建产物,直接放到嵌入式Linux设备的原生.NET 5 runtime中执行,这是不符合WASM程序运行逻辑的。Uno WASM项目的输出是专门适配浏览器WebAssembly runtime的代码,依赖浏览器提供的JS交互接口,不能直接用原生.NET runtime运行。
  • 异常中出现的WebAssembly.Runtime.NetCoreInvokeJS是WASM版本.NET runtime的内置接口,用于和浏览器JS环境交互,原生.NET runtime不存在这个接口的合法实现,就会抛出ECall methods must be packaged into a system module的安全异常。
  • 你本地运行正常是因为本地调试时VS Code自动启动了配套的Web服务+浏览器环境,WASM程序是跑在浏览器的WASM runtime中,而非本地原生.NET runtime。
解决方案

根据你的业务场景,可选择以下任意一种方案解决:

  • 方案一:沿用WASM实现远程UI
    不在嵌入式设备上直接运行WASM程序,而是在设备上部署轻量Web服务(比如.NET自带的Kestrel),将Uno WASM项目构建后的所有静态资源(html、wasm、js文件等)作为静态资源托管。终端用户只需通过任意浏览器访问设备的对应IP端口,即可加载并使用UI,天然满足远程访问需求。
  • 方案二:改用Uno Skia后端实现本地运行+远程访问
    切换项目构建目标为Uno的Skia GTK后端,编译后会生成可直接在嵌入式Linux原生.NET 5 runtime上运行的程序。如果需要远程访问,可搭配Linux通用的远程桌面方案(如VNC、RDP)即可实现。该方案的业务代码完全不需要修改,后续要兼容Windows系统时,只需切换为Skia Windows后端重新编译即可。
  • 临时验证方案
    立即调整你的远程部署配置,不要选择WASM项目的构建产物进行部署,改为选择对应平台的Skia后端项目的构建包,重新部署后即可正常运行。

额外注意:Uno平台的最新版本已不再支持.NET 5,如果要稳定适配.NET 5环境,需要将Uno相关Nuget包的版本锁定在支持.NET 5的范围内(4.8.x及更早版本)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:54:04