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

在Debian Stretch 9.3上运行.NET Core应用时遇错误求助

排查.NET Core应用在Debian Stretch 9.3上运行失败的问题

嘿,我来帮你一步步排查这个问题,咱们从最基础的细节开始:

  • 先纠正一个小失误:你提到执行.program命令,在Linux系统里,正确的当前目录程序执行写法是./program(注意是斜杠在前),这个格式错误可能直接导致运行失败,先试试修正这个命令再执行。

如果修正后还是不行,继续下面的排查步骤:

1. 检查程序文件的执行权限

SFTP传输文件后,Linux默认不会给程序文件自动赋予执行权限。你可以先查看权限状态:

ls -l program

如果输出的权限列里没有x(比如显示-rw-r--r--),就给它加上执行权限:

chmod +x program

之后再尝试运行./program。

2. 确认依赖环境是否齐全

情况A:你用的是「依赖框架部署」(编译时未加--self-contained true)

这种模式需要目标机器安装对应版本的.NET Core Runtime 2.0。先检查是否已安装:

dotnet --info

如果没有显示2.0版本的运行时,按照以下步骤安装:

# 导入微软GPG密钥
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg

# 添加Debian Stretch的.NET源
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list'

# 更新并安装2.0版本运行时
sudo apt-get update && sudo apt-get install dotnet-runtime-2.0.0

情况B:你用的是「自包含部署」(编译时指定了runtime)

自包含部署理论上不需要目标机器预装.NET Core运行时,但可能依赖Debian的系统基础库。可以用ldd命令检查程序依赖的系统库是否缺失:

ldd program

如果输出里有not found的项(比如libssl.so.1.0.0或libicuuc.so.57),安装对应的包即可:

sudo apt-get install libssl1.0.0 libicu57

3. 确认编译与传输的完整性

  • 检查你使用的编译命令是否正确,自包含部署的完整命令应该是:
    # 编译Linux通用版本
    dotnet publish -c Release -r linux-x64 --self-contained true
    # 编译Debian特定版本
    dotnet publish -c Release -r debian-x64 --self-contained true
    
  • 确认SFTP传输时,bin/Release/netcoreapp2.0/xxx-x64/publish目录下的所有文件都完整复制到了Linux主机,不要只复制部分文件。

4. 获取详细错误信息

如果以上步骤都没解决问题,运行程序时保留完整报错输出,或者直接运行程序集文件:

# 直接运行程序,查看完整报错
./program
# 或者用dotnet运行对应的dll文件(依赖框架部署模式下)
dotnet YourProgram.dll

把完整的错误信息整理出来,能更精准定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:02:16