#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();
}
}
}