当前位置: 首页 > 知识库问答 >
问题:

在redhat 7 Systemd中运行dotnet appname.dll时如何调试203/exec?

令狐良骏
2023-03-14

已经试着调试了4天了。我有一个ASP.NET Core2Web应用程序,我试图在Redhat Linux7.1Systemd中运行。dll在手动运行时工作正常,但在尝试通过SystemD运行时失败。

systemctl的输出

web.service-WebServiceLayer loaded:loaded(/etc/systemd/user/web.service;已启用;供应商预置:>已禁用)

激活:自SUN2019-04-28>12:49:01 CDT开始激活(自动重启)(结果:退出代码);2s前

进程:13588 execstart=/microsoft/dotnetcore/dotnet/local/lfs1/serviceLayer/webserviceLayer/webserviceLayer.dll(代码=exited,status=203/exec)

主PID:13588(代码=exited,status=203/exec)

4月28日12:49:01 MyMachine.NET SystemD[1]:Web.Service:主进程已退出,code=exited,status=203/exec

4月28日12:49:01 MyMachine.NET SystemD[1]:Unit Web.Service进入失败状态。

4月28日12:49:01 MyMachine.NET SystemD[1]:Web.Service失败。

这是基本服务文件

mymachine home/username $ cat /etc/systemd/user/web.service
[Unit]
Description=WebServiceLayer
After=syslog.target

[Service]

User=serviceUser

Group=serviceUser
PIDFile=/tmp/$i.pid
WorkingDirectory=%h
Environment="PATH=/microsoft/dotnetcore/"
ExecStart="/microsoft/dotnetcore/dotnet /local/lfs1/ServiceLayer/WebServiceLayer/WebServiceLayer.dll"
Restart=always
RestartSec=3
StartLimitBurst=10
StartLimitIntervalSec=0
KillSignal=SIGQUIT
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

[serviceuser@mymachine]://microsoft/dotnetcore/dotnet/local/lfs1/serviceLayer/webserviceLayer/webserviceLayer.dll宿主环境:生产内容根路径:/home/serviceUser正在监听:“http://0.0.0.0:7777”应用程序启动。按Ctrl+C关闭。

我已经研究过修复systemd Service203/exec故障(没有这样的文件或目录),但这对我的问题没有帮助。任何帮助都将不胜感激。

dll文件中Program.cs中的代码:

public static void Main(string[] args)
        {
            // NLog: setup the logger first to catch all errors
            var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
            try
            {
                logger.Debug("init main");
                CreateWebHostBuilder(args).Build().Run();
            }
            catch (Exception ex)
            {
                //NLog: catch setup errors
                logger.Error(ex, "Stopped program because of exception");
                throw;
            }
            finally
            {
                // Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
                NLog.LogManager.Shutdown();
            }
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseUrls(urls: "http://mymachine.net:7777") 
                .UseStartup<Startup>()
                .ConfigureLogging(logging =>
                {
                    logging.ClearProviders();
                    logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
                })
                .UseNLog();  // NLog: setup NLog for Dependency injection
    }

共有1个答案

方光华
2023-03-14

从你得到的输出来看,很难知道发生了什么。我建议您配置一些额外的日志记录。

首先,您可以将日志记录配置为文本文件以获取更多细节。更多信息:https://docs.microsoft.com/en-us/aspnet/core/fundaments/logging/?view=aspnetcore-2.2

之后,您可以在main方法中的代码周围放置一个大的try/catch并记录异常。

我想到的唯一快速检查是,serviceUser是否有足够的权限访问dll或配置文件或任何相关的东西?

 类似资料:
  • 问题内容: 我处于一个非常奇怪的位置(从我的java-newbie的角度来看): 我使用Eclipse编写了一个“ java程序”(一些带有类的.java文件),从本质上(分批)读取文本 .csv文件,“求值”其内容,并将结果写到 _out.csv文本文件中。要找到输入文件,它使用“文件选择器”(从此处获取示例:http : //docs.oracle.com/javase/tutorial/ui

  • 我通过Jasmine、Karma和各种浏览器进行测试。我目前正在调试一个只在PhantomJS中失败的测试。 我想调试这个调用,所以我在karma中设置了一个自定义的PhantomJS启动器,在调试端口打开的情况下运行它。 我可以通过该端口访问Chrome中的远程调试器,但是,它似乎对我的任何测试文件一无所知。它报告一个“关于:空白”和一个“localhost:9876”(Phantom正在访问的

  • 问题内容: 谁能告诉我如何对共享库进行运行时调试? 我需要在运行时调试共享库中的一个函数,但另一个程序会调用它。如何使用共享库执行类似dbx的操作? 我在AIX上使用dbx。我想做的是gdb比dbx好吗? 问题答案: 您只需要使用可执行文件调用gdb(无论是您的文件还是第三方文件都没有关系)。这是一个示例,其中我调试 ls 命令并在(共享) c库中 设置断点。此示例使用了gdb 6.8,它支持延迟

  • 问题内容: 我最近从log4j切换到logback,想知道是否有一种简单的方法可以在调试模式下运行logback,类似于log4j的属性。我需要看看它在哪里接我。 该文档提到使用a 打印出回传的内部状态,但这需要更改代码。 问题答案: [编辑] 此问题已在Logback 1.0.4中修复。现在,您可以用来启用回退设置的调试。 -旧答案- 不幸的是,无法通过System属性启用调试。你必须使用的。请

  • 问题内容: 当我运行以下代码时: 我收到此错误: 退出状态1 但是,这对调试错误的确切原因没有帮助。 如何获得更详细的信息? 问题答案: 解决方案是使用Command对象的属性。可以这样完成: 运行上面的代码,可以清楚地说明问题所在: 退出状态1:查找:-exec:不终止“;” 或“ +” 编辑: 在上面的代码中,我们希望在发生错误的情况下,消息将被打印到stderr,并且命令将返回非零的错误代码

  • 问题内容: 我正在尝试学习ES的工作原理,但是我无法从IDE中运行它。我想运行2.3.3构建,该构建仍将Maven用作其构建系统,但会不断出错。在我详细下载存储库之后,有人可以告诉我如何在IDEA中执行此操作。配置等 我从github下载存储库,然后将项目导入intellij并使用以下配置: 主类:org.elasticsearch.bootstrap.Elasticsearch Vm选项: 工作