我正在 Linux 中部署 .NET Core Worker Service 应用程序,作为 systemd 守护进程/服务,按照建议。 .NET Core 应用程序使用 SingleFile 属性发布,该属性生成一个一体化的 exe 文件。在systemd/system/myService.service 文件中,我将ExecStart 设置为指向该exe 文件的路径。
它有效,但我注意到在每次系统启动时,“提取”exe 捆绑包的服务工作目录都会安装到 /var/tmp/.net/root/{dynamic directory} - 每次启动时生成的动态目录。
我需要将文件安装到固定目录。我在 .service 配置选项中找不到控制此功能的选项。
任何人都知道如何做到这一点?
答案1
在您的用例中,使用米哈尔·波利托夫斯基提供的信息在评论中。您的提取目录设置为 /var/tmp 的原因是因为
DOTNET_BUNDLE_EXTRACT_BASE_DIR
为您提供服务的环境中不存在。
既然是这样的情况,你应该持久地定义该环境变量在您运行 systemd 服务的用户上。
(或者定义环境文件或Environment=服务文件本身的选项)