Ubuntu下部署.NET Core项目遇systemd服务200/CHDIR错误求助
解决systemd服务的200/CHDIR错误
问题描述
部署首个.NET Core项目,项目路径为/var/netcore/,创建的systemd服务配置如下:
[Unit] Description=ASP .NET Web Application [Service] WorkingDirectory=/var/netcore ExecStart=/usr/bin/dotnet /root/var/netcore/PersonalBlog.Web.dll Restart=always RestartSec=10 SyslogIdentifier=netcore-demo User=www-data Environment=ASPNETCORE_ENVIRONMENT=Production [Install] WantedBy=multi-user.target
启用并启动服务后,出现200/CHDIR错误,服务状态输出:
AspNetServer.service - ASP .NET Web Application Loaded: loaded (/etc/systemd/system/AspNetServer.service; enabled; vendor preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Thu 2023-05-25 00:03:30 MSK; 322ms ago Process: 3065 ExecStart=/usr/bin/dotnet /root/var/netcore/PersonalBlog.Web.dll (code=exited, status=200/CHDIR) Main PID: 3065 **(code=exited, status=200/CHDIR)** May 25 00:03:30 31-31-199-190.cloudvps.regruhosting.ru systemd[1]: AspNetServer.service: Main process exited, code=exit> May 25 00:03:30 31-31-199-190.cloudvps.regruhosting.ru systemd[1]: AspNetServer.service: Failed with result 'exit-code'.
错误原因
200/CHDIR表示systemd无法切换到指定工作目录,或执行文件存在路径/权限问题:
- ExecStart中DLL路径错误:项目实际路径为
/var/netcore/,但配置中写为/root/var/netcore/PersonalBlog.Web.dll,/root目录默认仅root用户可访问,www-data无权限进入。 - 工作目录权限不足:www-data用户可能未获得
/var/netcore目录的访问权限。
修复步骤
- 修正DLL路径
编辑systemd服务文件:
sudo nano /etc/systemd/system/AspNetServer.service
将ExecStart行修改为:
ExecStart=/usr/bin/dotnet /var/netcore/PersonalBlog.Web.dll
- 设置目录权限
确保www-data用户拥有/var/netcore目录的访问权限:
sudo chown -R www-data:www-data /var/netcore sudo chmod -R 755 /var/netcore
- 重新加载配置并重启服务
sudo systemctl daemon-reload sudo systemctl restart AspNetServer.service
查看服务状态确认修复:
sudo systemctl status AspNetServer.service
内容的提问来源于stack exchange,提问作者user20986100
相关产品推荐
相关产品推荐

