在Ubuntu 16.04下尝试运行ASP .NET Core应用程序时出现核心转储错误。

8

我正在尝试在Ubuntu 16.04下将我的asp.net core应用程序作为服务运行。 我按照这份文档创建了服务配置。

[Unit]
Description=TNW Main Service

[Service]
WorkingDirectory=/home/tnw
ExecStart=/usr/bin/dotnet /home/tnw/Tnw.MealsApi.dll
Restart=always
RestartSec=10
SyslogIdentifier=tnw
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

我已启用我的服务:

sudo systemctl enable tnw.service

最后我尝试运行它,但是出现了异常:

● tnw.service - TNW Main Service Loaded: loaded (/etc/systemd/system/tnw.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: core-dump) since Tue 2019-09-10 12:57:20 CEST; 118ms ago
Process: 15160 ExecStart=/usr/bin/dotnet /home/tnw/Tnw.MealsApi.dll (code=dumped, signal=ABRT)
Main PID: 15160 (code=dumped, signal=ABRT)

Sep 10 12:57:20 server767126 systemd[1]: tnw.service: Unit entered failed state.
Sep 10 12:57:20 server767126 systemd[1]: tnw.service: Failed with result 'core-dump'.

当我手动运行这个应用程序时,它能正常工作。
sudo dotnet Tnw.MealsApi.dll

//编辑:我在日志中找到了以下异常:

 System.Net.Sockets.SocketException (13): Permission denied

你好,你找到解决方案了吗? - Vindberg
嗨,在我的情况下,问题与用户wwwdata没有使用端口80和443的权限有关,因此我使用了root用户作为解决方法。但这只是临时解决方案。我尝试了许多教程,如何将特权添加到其他用户,但没有成功。 - BąQ
1
你尝试过更改为非特权端口号,例如5000,并在iptables中添加重定向吗?可以使用以下命令:sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 5000 - Vindberg
我会尝试,但不确定它是否能够在.NET Core自动重定向中工作。谢谢! - BąQ
我看到这个帖子有点老了,但我想问一下你们有没有找到解决这个问题的方法。在我的情况下,我在同一个容器中托管了一个net core API和一个SignalR服务。API从端口5000(HTTP)、5001(HTTPS)重定向。SignarR服务从端口5002(HTTP)、5003(HTTPS)重定向。就像原始帖子一样,当我手动运行dll时它可以工作,但是服务无法启动进程,我猜测是由于缺少对端口5002、5003的权限所致。 谢谢。 - Sergio Hernández
3个回答

2

在我的情况下,导致程序启动异常的原因是一个例外。我使用以下命令找到了它:journalctl -f
此外,建议使用try块包装程序启动,并使用例如Serilog将错误记录到文件中。


1
根据这个用法,使用“Downloads”文件夹来保存您的“dll”。以下是“.service”文件的配置。
[Unit]
Description=MyService in .NET
# Requires=xyz.service
# After=xyz.service

[Service]
Type=simple
ExecStart=/usr/bin/dotnet  /home/linux/Downloads/MyService.dll

[Install]
WantedBy=multi-user.target

这条路径 /home/linux/Downloads/MyService.dll 在您的情况下可能会有所不同。
然后运行。
sudo systemctl daemon-reload

0
我的服务正常运行,但无法从外部访问,显示502错误。如果我使用直接命令运行,则可以正常工作。需要帮助修复此问题。
以下是服务状态。 Demo.service - Demo 已加载:loaded (/etc/systemd/system/Demo.service; enabled; preset: disabled) 活动状态:active (running) since Tue 2023-07-11 12:29:39 UTC; 6s ago 主进程ID:1476925 (dotnet) 任务数:15 (限制:4568) 内存:15.6M CPU:389ms CGroup:/system.slice/Demo.service └─1476925 /usr/bin/dotnet /home/ec2-user/wwwroot/WebApp.dll --urls http://localhost:5000

根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,帮助其他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community
根据目前的写法,你的回答不够清楚。请编辑以添加更多细节,以帮助其他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何写好回答的更多信息。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接