Доступ к пути «/proc/4457/map_files » запрещен

#linux #.net-core #console

Вопрос:

Я попытаюсь запустить консольное приложение .net core5 в Linux, а не с пользователем root. но у меня есть исключение, Доступ к пути /proc/4457/map_files запрещен.

чтобы проверить, я меняю право на папку /proc , чтобы все могли читать и писать (я знаю, что это плохо, но я просто проверяю, и это не помогает ! та же проблема )

Я читал некоторые другие квесты stackoverflow об этой связи с докером, и в них говорится о рабочем каталоге приложения, поэтому я пытаюсь заставить его

 builder.SetBasePath("/usr/lib64/nagios/plugins/notif")
 

но это не работает ! У меня больше нет идей, может быть, кто-нибудь может мне помочь ?

 using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using NotifCli.service;
using NotifCli.services;
using Serilog;
using System;
using System.IO;

namespace NotifCli
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                
                var builder = new ConfigurationBuilder();
                BuildConfig(builder);
                //Directory.GetCurrentDirectory(); 
                //Try to force CurrentDirectory
                string CurrentDirectory = "/usr/lib64/nagios/plugins/notif"; 
                CurrentDirectory = Path.Combine(CurrentDirectory, "log.txt");           
                Log.Logger = new LoggerConfiguration()
                    .ReadFrom.Configuration(builder.Build())
                    .Enrich.FromLogContext()
                    .WriteTo.Console()
                    .WriteTo.File(CurrentDirectory, rollingInterval: RollingInterval.Day, retainedFileCountLimit: 31)
                    .CreateLogger();           
                Log.Logger.Information("Application start");
            
                var host = Host.CreateDefaultBuilder()                
                .ConfigureServices((context, services) =>
                {
                    services.AddTransient<IEntryPoint, EntryPoint>();
                    services.AddScoped<IServiceSendNotification, ServiceSendNotification>();
                    services.AddScoped<IServiceMailjet, ServiceMailjet>();
                })
                .UseSerilog()
                .Build();

                var svc = ActivatorUtilities.CreateInstance<EntryPoint>(host.Services);
                Log.Logger.Information("Lauch Run2 fonction");
                svc.Run2(args); // --> exception Access to the path '/proc/4457/map_files' is denied.
            }
            catch(Exception ex)
            {
                Log.Logger.Error("erreur");
                Log.Logger.Error(ex.Source);
                Log.Logger.Error(ex.Message);
            }
        }

        static void BuildConfig(IConfigurationBuilder builder)
        {
            //builder.SetBasePath(Directory.GetCurrentDirectory())
            //try to force current dir 
            builder.SetBasePath("/usr/lib64/nagios/plugins/notif")
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONEMENT") ?? "Production"}.json", optional: true, reloadOnChange: true)
                .AddEnvironmentVariables();
        }
    }   
}