英文:
Published .Net 7 app not running on ubuntu
问题
我有一个包含2个独立项目的.NET 7解决方案。
我正在使用Ubuntu 23.04。
/Project1
- Project1.csproject
- appsettings.json
/Project2
- Project2.csproject
- appsettings.json
MySolution.sln
我运行了以下命令:
dotnet publish 'MySolution.sln' --self-contained false -r linux-x64 -c Release -o publish
MSBuild版本为.NET的17.4.3+7e646be43
确定要还原的项目...
所有项目都是最新的,无需还原。
Project1 -> /home/myuser/mysolution/project1/bin/Release/net7.0/linux-x64/Project1.dll
Project1 -> /home/myuser/mysolution/publish/
Project2 -> /home/myuser/mysolution/project1/bin/Release/net7.0/linux-x64/Project2.dll
Project2 -> /home/myuser/mysolution/publish/
它会生成一个包含正确代码的/publish目录。
不幸的是,我无法使这些应用程序运行。
我的Appsettings文件包含Kestrel部分,以使每个项目在不同的端口上打开:
Project1/appsettings.json :
"AllowedHosts": "*",
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5001"
},
"Https": {
"Url": "https://localhost:5001"
}
}
}
Project2/appsettings.json :
"AllowedHosts": "*",
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5002"
},
"Https": {
"Url": "https://localhost:5002"
}
}
}
即使我直接转到Publish/Project文件夹并运行
dotnet Project1.dll --verbosity=diagnostic
我也没有任何输出。
我的dotnet已安装:
.NET SDK:
Version: 7.0.105
Commit: e1bc5e001c
Runtime Environment:
OS Name: ubuntu
OS Version: 23.04
OS Platform: Linux
RID: ubuntu.23.04-x64
Base Path: /usr/lib/dotnet/sdk/7.0.105/
Host:
Version: 7.0.5
Architecture: x64
Commit: 8042d61b17
已安装.NET SDKs:
7.0.105 [/usr/lib/dotnet/sdk]
已安装.NET运行时:
Microsoft.AspNetCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]
我也尝试过使用systemd自动启动项目,但它会在少于一秒钟后启动然后停止。
cd /etc/systemd/system/
sudo nano project1.service
[Unit]
Description=Project1
[Service]
Type=simple
WorkingDirectory=/home/myuser/
Restart=on-failure
RestartSec=10
ExecStart=/usr/bin/dotnet /home/myuser/mysolution/project1/bin/Release/net7.0/linux-x64/Project1.dll
KillSignal=SIGINT
SyslogIdentifier=dotnet-project1
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
感谢任何帮助!我该如何解决这个问题?
我希望有人能发现我犯的错误!
英文:
I have a .Net 7 solution that contains 2 separate projects.
I am using ubuntu 23.04.
/Project1
- Project1.csproject
- appsettings.json
/Project2
- Project2.csproject
- appsettings.json
MySolution.sln
I have ran the command:
dotnet publish 'MySolution.sln' --self-contained false -r linux-x64 -c Release -o publish
MSBuild version 17.4.3+7e646be43 for .NET
Determining projects to restore...
All projects are up-to-date for restore.
Project1 -> /home/myuser/mysolution/project1/bin/Release/net7.0/linux-x64/Project1.dll
Project1 -> /home/myuser/mysolution/publish/
Project2 -> /home/myuser/mysolution/project1/bin/Release/net7.0/linux-x64/Project2.dll
Project2 -> /home/myuser/mysolution/publish/
It produces a /publish directory containing the correct code.
Unfortunately, I can not get these apps to run.
My Appsettings files contain Kestrel sections to have each of the projects open on different ports:
Project1/appsettings.json :
"AllowedHosts": "*",
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5001"
},
"Https": {
"Url": "https://localhost:5001"
}
}
}
Project2/appsettings.json :
"AllowedHosts": "*",
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5002"
},
"Https": {
"Url": "https://localhost:5002"
}
}
}
Even when I navigate directly to the Publish/Project folders and run
dotnet Project1.dll --verbosity=diagnostic
I get no output.
My dotnet is installed:
.NET SDK:
Version: 7.0.105
Commit: e1bc5e001c
Runtime Environment:
OS Name: ubuntu
OS Version: 23.04
OS Platform: Linux
RID: ubuntu.23.04-x64
Base Path: /usr/lib/dotnet/sdk/7.0.105/
Host:
Version: 7.0.5
Architecture: x64
Commit: 8042d61b17
.NET SDKs installed:
7.0.105 [/usr/lib/dotnet/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]
I have also tried using systemd to boot the project automatically but it starts then deactivates after less than a second.
cd /etc/systemd/system/
sudo nano project1.service
[Unit]
Description=Project1
[Service]
Type=simple
WorkingDirectory=/home/myuser/
Restart=on-failure
RestartSec=10
ExecStart=/usr/bin/dotnet /home/myuser/mysolution/project1/bin/Release/net7.0/linux-x64/Project1.dll
KillSignal=SIGINT
SyslogIdentifier=dotnet-project1
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
Any help is appreciated! How do I go about troubleshooting this?
I'm hoping someone can spot a mistake I have made!
答案1
得分: 0
我的设置问题与我使用的路径有关。我将已发布的文件从已发布的目录移动到 /var/myapp。
sudo cp -a /home/myuser/mysolution/ /var/myapp/
然后,我更新了 systemd 文件中的这些详细信息。
[Unit]
Description=Project1
[Service]
Type=simple
WorkingDirectory=/var/myapp
Restart=on-failure
RestartSec=10
ExecStart=/usr/bin/dotnet /var/myapp/project1/Project1.dll
KillSignal=SIGINT
SyslogIdentifier=dotnet-project1
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
英文:
The problem with my set up was to do with the paths I was using. I moved the published files from the published directory to /var/myapp
sudo cp -a /home/myuser/mysolution/ /var/myapp/
I then updated the systemd file with these details
[Unit]
Description=Project1
[Service]
Type=simple
WorkingDirectory=/var/myapp
Restart=on-failure
RestartSec=10
ExecStart=/usr/bin/dotnet /var/myapp/project1/Project1.dll
KillSignal=SIGINT
SyslogIdentifier=dotnet-project1
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论