我在我的树莓上运行了一个DotNet API,当我手动启动可执行文件时,它会监听 在我的appsettings.json上配置为http://<raspberry_ip>:<custom-port>,但当我在我的覆盆子靴子上使用它作为服务时,它在http://localhost:5000上运行.

我知道我的/lib/systemd/system/<app>.service美元里肯定少了些什么,但我没能看清是什么.

我的服务配置:

[Unit]
Description=Lauches API on boot
After=multi-user.target

[Service]
ExecStart=/home/<user>/Dev/<app_executable>
User=<user>

[Install]
WantedBy=multi-user.target

这似乎很奇怪,这是因为服务启动的那一刻(太快了?),还是我在配置中遗漏了其他东西?

非常感谢.

PS:我也try 更改ExecStart,并提供我的DotNet路径,如下所示: 但它也不起作用.

推荐答案

您需要设置WorkingDirectory参数.

根据前docs名:

工作目录=
获取相对于RootDirectory=或特殊值"~"指定的服务根目录的目录路径.设置 已执行进程的工作目录.如果设置为"~",则主页 使用在USER=中指定的用户的目录.如果未设置,则默认为 以系统实例的形式运行到根目录,并且 相应用户的主目录(如果以用户身份运行).如果设置为 以"-"字符为前缀,则缺少的工作目录不 被认为是致命的.如果未设置RootDirectory=/RootImage=,则 WorkingDirectory=是相对于运行 服务经理.请注意,设置此参数可能会导致 要添加到单元的其他依赖项(请参见上文).

Csharp相关问答推荐

获取Windows和Linux上的下载文件夹

为什么.Equals(SS,StringComparison. ClientCultureIgnoreCase)在Net 4.8和6.0之间不同?

如何使嵌套for-loop更高效?

在. net毛伊岛窗口的深度链接已经创建""

try 还原包时出错:Dapper已经为System.Data.SQLClient定义了依赖项''''

使用LayoutKind在C#中嵌套 struct .显式

限制特定REST API不被访问,但部署代码

mocking对象的引发事件并作为用于调用方法的参数对象传递到那里

ASP.NET Core AutoMapper:如何解决错误 CS0121调用在以下方法或属性之间不明确

使用泛型可空类实现接口

用于管理System.Text.Json中的多态反序列化的自定义TypeInfoResolver

在C#中,非静态接口方法的抽象和虚拟是冗余的吗?

如何从另一个类的列表中按ID取值

如何强制新设置在Unity中工作?

发布.NET 8 Blazor WebAssembly独立应用程序以进行静态站点部署

处理方法内部过滤与外部过滤

Excel将';@';添加到具有范围的公式中

有没有更好的方法来使用LINQ获取整行的计算组

SendInput无法在C#中正确模拟键盘

更新实体框架上的被跟踪实体