Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
在Ubuntu上托管NetCore应用程序_Ubuntu_Asp.net Core_.net Core_Asp.net Core 2.0 - Fatal编程技术网

在Ubuntu上托管NetCore应用程序

在Ubuntu上托管NetCore应用程序,ubuntu,asp.net-core,.net-core,asp.net-core-2.0,Ubuntu,Asp.net Core,.net Core,Asp.net Core 2.0,嘿,伙计们,我在Ubuntu上托管.net内核时遇到了一些问题,我可以使用以下命令很好地托管它: dotnet /home/bourdain/website/FrutaMargemCore/bin/Release/netcoreapp2.0/FrutaMargemCore.dll 这可以很好地托管应用程序,我可以通过虚拟机的外部IP访问它,但它似乎将它锁定在某种会话状态,终端只是托管它,我需要终止进程以运行任何其他命令 info: Microsoft.AspNetCore.DataProtec

嘿,伙计们,我在Ubuntu上托管.net内核时遇到了一些问题,我可以使用以下命令很好地托管它:

dotnet /home/bourdain/website/FrutaMargemCore/bin/Release/netcoreapp2.0/FrutaMargemCore.dll
这可以很好地托管应用程序,我可以通过虚拟机的外部IP访问它,但它似乎将它锁定在某种会话状态,终端只是托管它,我需要终止进程以运行任何其他命令

info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using'/home/bourdain/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest.
Hosting environment: Production
Content root path: /home/bourdain/website/FrutaMargemCore/bin/Release/netcoreapp2.0
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
关闭SSH连接将终止进程,应用程序将不再托管

我试过使用

dotnet run /home/bourdain/website/FrutaMargemCore/bin/Release/netcoreapp2.0/FrutaMargemCore.dll
但它随机抛出一个异常

Using launch settings from /home/bourdain/website/FrutaMargemCore/Properties/launchSettings.json...

Unhandled Exception: System.FormatException: Value for switch '/home/bourdain/website/FrutaMargemCore/bin/Release/netcoreapp2.0/FrutaMargemCore.dll' is missing.
   at Microsoft.Extensions.Configuration.CommandLine.CommandLineConfigurationProvider.Load()
   at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers)
   at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
   at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices(AggregateException& hostingStartupErrors)
   at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
   at FrutaMargemCore.Program.BuildWebHost(String[] args) in /home/bourdain/website/FrutaMargemCore/Program.cs:line 21
   at FrutaMargemCore.Program.Main(String[] args) in /home/bourdain/website/FrutaMargemCore/Program.cs:line 17

我如何在ubuntu服务器上托管netcore内核,而不让它在我关闭SSH连接时终止?

您应该从创建如下服务文件开始:

sudo nano /etc/systemd/system/kestrel-yourApp.service
服务文件将包含以下内容:

[Unit]
Description=My ASPNET Core APP

[Service]
WorkingDirectory=/var/someFolder/yourApp
ExecStart=/usr/bin/dotnet /var/aspnetcore/yourApp/yourApp.dll
Restart=always
RestartSec=20
SyslogIdentifier=dotnet-example
User=yourUser
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target
根据应用程序的上下文(如用户、路径等)调整参数。用户必须具有正确的权限

这将启动服务:

systemctl enable kestrel-yourApp.service
执行此操作只是为了检查其是否正在运行:

systemctl status kestrel-yourApp.service

很多关于如何做到这一点的文档,我建议你试试