0

我目前正在尝试在 Amazon Linux 2 EC2 实例上运行 .NET 5.0 ASP.NET 应用程序。

这是由 nginx 托管的,在部署时自动使用 supervisord 运行。这是我在部署后第一次运行它,并从这个应用程序的主管 stderr 中发现了这个错误堆栈跟踪。

System.UnauthorizedAccessException: Access to the path '/root/.dotnet' is denied.
 ---> System.IO.IOException: Permission denied
   --- End of inner exception stack trace ---
   at System.IO.FileSystem.CreateDirectory(String fullPath)
   at System.IO.Directory.CreateDirectory(String path)
   at Microsoft.Extensions.EnvironmentAbstractions.DirectoryWrapper.CreateDirectory(String path)
   at Microsoft.DotNet.Configurer.FileSystemExtensions.<>c__DisplayClass0_0.<CreateIfNotExists>b__0()
   at Microsoft.DotNet.Cli.Utils.FileAccessRetrier.RetryOnIOException(Action action)
   at Microsoft.DotNet.Configurer.FileSystemExtensions.CreateIfNotExists(IFileSystem fileSystem, String filePath)
   at Microsoft.DotNet.Configurer.FileSentinel.Create()
   at Microsoft.DotNet.Configurer.DotnetFirstTimeUseConfigurer.Configure()
   at Microsoft.DotNet.Cli.Program.ConfigureDotNetForFirstTimeUse(IFirstTimeUseNoticeSentinel firstTimeUseNoticeSentinel, IAspNetCertificateSentinel aspNetCertificateSentinel, IFileSentinel toolPathSentinel, Boolean isDotnetBeingInvokedFromNativeInstaller, DotnetFirstRunConfiguration dotnetFirstRunConfiguration, IEnvironmentProvider environmentProvider, Dictionary`2 performanceMeasurements)
   at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, TimeSpan startupTime, ITelemetry telemetryClient)
   at Microsoft.DotNet.Cli.Program.Main(String[] args)

我很好奇为什么这是针对 root 来创建目录并授予 root 解决方案的权限,或者是别的什么吗?从我的搜索来看,这似乎没有发生在其他任何人身上。我只是非常谨慎地公开授予根文件夹的开放权限,如果这甚至是这里的解决方案的话。

作为参考,这是我设置的教程:https ://docs.servicestack.net/deploy-netcore-to-amazon-linux-2-ami#

4

1 回答 1

0

我也遇到了这个,因为 DOTNET_CLI_HOME 没有定义为主管环境变量的一部分,所以当它运行时它会在一个不受欢迎的地方寻找。

尝试将此添加到您的主管服务文件(或附加到任何现有变量):

environment=DOTNET_CLI_HOME=/tmp

然后确保重新加载并更新您的配置:

sudo supervisorctl reread
sudo supervisorctl update

然后,您应该会发现一切正常。

于 2021-06-19T23:01:37.533 回答