【问题标题】:.net core on Ubuntu Write File | System.IO.IOException: Permission denied.net 内核上的 Ubuntu 写入文件 | System.IO.IOException:权限被拒绝
【发布时间】:2020-12-02 16:54:14
【问题描述】:

我创建了一个托管 SignalR 客户端的 .net5.0 ubuntu 服务(ASP.NET Core Web 应用程序)。 这完美无缺。

现在我正在尝试读取特定于应用程序的配置文件。 无论我在哪里找到文件,我总是会收到 System.IO.IOException: Permission denied

我尝试了以下路径:

 - /ush/share/myConfigFile.config
 - ~/.config/myConfigFile.config
 - ~/.myConfigFolder/myConfigFile.config
 - ~/ApplicationFolder/.myConfigFolder/myConfigFile.config

服务在ubuntu上运行,这是我用来启动服务的.service文件

[Unit]
Description=Lumin Service in .NET

[Service]
Type=simple
WorkingDirectory=/home/ubuntu/HeliosClock
ExecStart=/usr/share/dotnet/dotnet /home/ubuntu/HeliosClock/HeliosService.dll
User=ubuntu

[Install]
WantedBy=multi-user.target

运行服务的app权限为普通Ubuntu User权限。

使用以下代码访问该文件:

FileStream fileStream = new FileStream(myFilePath, FileMode.Open);
using (StreamReader reader = new StreamReader(fileStream))
string line = await reader.ReadLineAsync().ConfigureAwait(false);

该服务在 Ubuntu 20.04 的 Raspberry PI 4 上运行

任何帮助为什么我总是得到System.IO.IOException: Permission denied 当我想加载特定于应用程序的配置文件时。

是否还有另一个文件夹应该存储用户特定应用程序的配置文件?

【问题讨论】:

    标签: c# asp.net-core ubuntu .net-core


    【解决方案1】:

    我找到了解决方案: 我访问了 HosedService 中的配置文件。

     public void ConfigureServices(IServiceCollection services)
     {
                services.AddHostedService<HeliosServerClient>();
     }
    

    当我通过 Singelton 将 ConfigurationService 注入到 HostedService 中时,我能够访问主目录。

    将代码更改为:

    public void ConfigureServices(IServiceCollection services)
     {
           services.AddSingleton(configureService);
     }
    

    并注入 HeliosServerClient:

    public HeliosServerClient(ConfiguarationService service)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      • 2023-04-01
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 2015-08-24
      相关资源
      最近更新 更多