Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将dotnet应用程序作为守护程序服务执行_C#_.net_Linux_Daemon - Fatal编程技术网

C# 无法将dotnet应用程序作为守护程序服务执行

C# 无法将dotnet应用程序作为守护程序服务执行,c#,.net,linux,daemon,C#,.net,Linux,Daemon,我正在尝试将我的dotnet应用程序作为守护程序服务运行,我所做的第一步是: 使用NetCore 2.0创建应用程序 使用dotnet发布bot 在Ubuntuterminal中,我为运行守护程序创建了一个用户: sudo useradd -s /sbin/nologin dotnetuser sudo mkdir /var/bot sudo cp -R /home/publish/* /var/bot sudo chown -R dotnetuser:dotnetuser /var/bot

我正在尝试将我的
dotnet
应用程序作为守护程序服务运行,我所做的第一步是:

  • 使用NetCore 2.0创建应用程序
  • 使用
    dotnet发布bot
  • Ubuntu
    terminal中,我为运行守护程序创建了一个用户:

    sudo useradd -s /sbin/nologin dotnetuser
    sudo mkdir /var/bot
    sudo cp -R /home/publish/* /var/bot
    sudo chown -R dotnetuser:dotnetuser /var/bot
    
    因此,我在:
    /etc/systemd/system/netcore控制台bot.service
    目录下创建了一个自定义的
    systemd
    单元文件:

    [Unit]
    Description= Bot console application
    DefaultDependencies = no
    
    [Service]
    Type = oneshot
    RemainAfterExit = no
    ExecStart= /var/bot/ bot.dll
    WorkingDirectory = /var/bot
    User = dotnetuser
    Group = dotnetuser
    
    [install]
    
    我尝试使用
    systemctl status
    命令执行
    daemon
    start netcore console bot.service

    但我得到了:

    netcoreconsole-bot.service:主进程已退出,代码=退出


    我做错了什么?

    我非常确定,您需要对我的测试进行的唯一更改是确保告诉dotnet运行dll。我的路径应该非常接近你需要做的。或者,您可以在发布应用程序并将运行时与应用程序打包时使用

    [Unit]
    Description= Bot console application
    DefaultDependencies = no
    
    [Service]
    Type = oneshot
    RemainAfterExit = no
    ExecStart= /usr/bin/dotnet /var/bot/bot.dll
    WorkingDirectory = /var/bot
    User = dotnetuser
    Group = dotnetuser
    
    [install]
    

    从何处发布并针对哪个操作系统?此错误反映二进制文件本身。如果您为Windows编译并尝试在Linux上运行,则会出现此错误,或为x64编译并尝试在x86上运行错误表示您试图在不启动CLR的情况下启动服务您是否已经查看过是否可以直接使用
    dotnet path/to/the.dll运行可执行文件?可能是因为ExecStart部分中存在不必要的空间?