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

.Net Core部署至Ubuntu(Nginx)仍处于开发模式问题排查

问题原因与解决建议

首先明确:launchSettings.json仅用于本地开发工具(如Visual Studio、VS Code),发布后的生产环境不会读取这个文件,所以上传它没用。以下是可能导致项目运行在开发模式的原因及解决办法:

1. 服务器未正确设置ASPNETCORE_ENVIRONMENT环境变量

这是最常见的原因,.NET Core优先读取系统环境变量来确定运行环境,而非launchSettings.json。

临时生效(仅当前终端会话)

启动项目前执行:

export ASPNETCORE_ENVIRONMENT=Production
dotnet YourProject.dll

永久生效(针对当前用户)

编辑用户配置文件~/.bashrc,添加以下内容:

export ASPNETCORE_ENVIRONMENT=Production

执行source ~/.bashrc使配置立即生效。

永久生效(全局所有用户)

编辑/etc/environment文件,添加:

ASPNETCORE_ENVIRONMENT=Production

重启服务器或重新登录后生效。

若使用systemd托管服务

如果用systemd管理.NET Core进程,需要在服务配置文件(如/etc/systemd/system/yourproject.service)的[Service]段添加:

Environment="ASPNETCORE_ENVIRONMENT=Production"

然后执行:

sudo systemctl daemon-reload
sudo systemctl restart yourproject.service

2. 发布包中包含appsettings.Development.json

检查发布后的输出文件夹(~/MyOutFolder),如果存在appsettings.Development.json,当环境变量未正确设置时,项目默认会加载开发环境配置。

解决:在项目的.csproj文件中添加配置,发布时排除该文件:

<ItemGroup>
  <Content Remove="appsettings.Development.json" />
  <None Include="appsettings.Development.json" CopyToPublishDirectory="Never" />
</ItemGroup>

重新执行发布命令即可。

3. 代码中硬编码指定了开发环境

检查Program.cs(.NET 6+为顶级语句),看是否存在手动指定环境的代码,比如:

// 错误示例
WebHost.CreateDefaultBuilder(args)
       .UseEnvironment("Development")
       .UseStartup<Startup>();

如果有,删除该代码或改为动态读取环境变量:

.UseEnvironment(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production")

4. 确认发布配置正确性

再次确认发布命令确实使用了Release配置:

dotnet publish --configuration Release --output ~/MyOutFolder

可以检查发布文件夹内的文件,确保没有残留开发环境的配置或编译产物。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:15:09