Ubuntu 20.04.5 LTS部署.NET 7应用后无法运行,提示Exec格式错误
解决.NET 7应用部署后"Exec format error"问题
可能原因
- 编译架构不匹配:本地编译时的CPU架构(如x86/AMD64)与服务器CPU架构(如ARM/ARM64)不一致
- 发布配置错误:发布时未指定匹配服务器的目标运行时,或发布类型选择错误
- 文件传输损坏:应用文件在传输到服务器的过程中出现损坏,导致二进制无法正常解析
解决步骤
确认服务器CPU架构
执行命令查看服务器的硬件架构:uname -m常见输出:
x86_64(AMD64)、aarch64(ARM64)、armv7l(ARM32)重新发布匹配架构的应用
在开发环境中,使用dotnet publish命令指定对应服务器的运行时:- 针对AMD64架构服务器:
dotnet publish -c Release -r linux-x64 --self-contained true - 针对ARM64架构服务器:
dotnet publish -c Release -r linux-arm64 --self-contained true
说明:
--self-contained true会打包.NET 7运行时,无需服务器提前安装对应环境;若服务器已装.NET 7运行时,可改为--self-contained false- 针对AMD64架构服务器:
验证文件完整性
用scp或rsync重新传输发布后的文件,传输完成后对比本地与服务器文件的MD5值确认无损坏:# 本地计算文件MD5 md5sum ./bin/Release/net7.0/linux-x64/publish/WEBAPP # 服务器端计算文件MD5 md5sum ./WEBAPP确保两次输出的MD5值完全一致
设置可执行权限
给服务器上的应用文件添加执行权限:chmod +x ./WEBAPP
另外,你尝试的#!/.WEBAPP是错误用法,shebang仅用于指定脚本的解释器(如框架依赖型发布的应用可写#!/usr/bin/env dotnet),不适用于独立发布的二进制文件。
内容的提问来源于stack exchange,提问作者Software Architect
相关产品推荐
相关产品推荐

