我有一个使用Visual Studio制作和测试的项目。有用。 然后我将它上传到Ubuntu服务器。 然后用dotnet run
运行它。 Works,远程机器看到它(通过nginx代理)。Kestrel服务器在后台运行时不起作用,为什么?
然后我试了dotnet run &
。该过程看起来像开始,但没有监听指定的端口。然后,根据the example,我试过sudo nohup dotnet run kestrel > /dev/null 2>&1 &
。这一次它听了一会儿,然后去世:
应用程序启动。按下Ctrl + C关闭。
失败: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware [0] 发生未处理的异常:找不到编译库 位置:为包“google.protobuf” System.InvalidOperationException找不到编译库的位置包“google.protobuf”在 Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths()
(从输出nohup.out的的片段,第一床单,我跳过项目的详细信息为不相关和私有的)。
任何线索发生了什么?在前台运行时,我仍然没有错误。
下面是我发现的:当我作为root运行它时,我无法运行它(它给出相同的错误消息)。在我的测试服务器上,我有一个名为“dotnet”的特殊用户帐户。当我以dotnet
的身份登录时,我可以运行该应用程序。作为根我不能。
我不想用root权限运行我的应用程序。
下一个尝试:我以root身份运行dotnet restore
。然后我去nohup dotnet run kestrel > /dev/null 2>&1 &
,它的工作原理。
不错。现在有没有办法以有限的权限启动我的应用程序?
在哪个端口上运行它?端口<1024左右,需要root权限 – Tseng
高端,54321。我可能通过在不同的服务器上尝试相同的操作,发现偶然发生的事情。问题不在于端口访问权限,而在于对.NET临时文件具有文件权限。 – Harry