Чтение и использование appsettings.json в Program.cs? - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь настроить ведение журнала для моего приложения на использование указанного пути, но мои попытки доступа к appsettings.json в моем файле Program.cs, похоже, не работают.Выдает ошибку и приложение не запускается.

Я нашел это:

Прочитайте appsettings.json в Main Program.cs

и попробовал совет, но, похоже, это не так.рабочий.

Мой файл Program.cs:

public class Program
{
    public static void Main(string[] args)
    {

        var config = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json", optional: false)
            .Build();

        LogConfig logConfig = new LogConfig();
        config.GetSection("Config").Bind(logConfig);
        CreateWebHostBuilder(args, logConfig).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args, LogConfig config) =>
        WebHost.CreateDefaultBuilder(args)
        .ConfigureLogging(builder => builder.AddFile(options => {
            options.FileName = "AppLog-"; // The log file prefixes
            options.LogDirectory = config.LoggingPath; // The directory to write the logs
            options.FileSizeLimit = 20 * 1024 * 1024; // The maximum log file size (20MB here)
            options.Extension = "txt"; // The log file extension
            options.Periodicity = PeriodicityOptions.Hourly; // Roll log files hourly instead of daily.
        }))
            .UseStartup<Startup>();
}

И LogConfig.cs:

public class LogConfig
{
    private string loggingPath;

    public string LoggingPath { get => loggingPath; set => loggingPath = value; }
}

Когда я пытаюсь запустить свое приложение, я получаю следующую ошибкуброшено сообщение:

HTTP Error 500.30 - ANCM In-Process Start Failure
Common causes of this issue:
The application failed to start
The application started but then stopped
The application started but threw an exception during startup
Troubleshooting steps:
Check the system event log for error messages
Enable logging the application process' stdout messages
Attach a debugger to the application process and inspect
For more information visit: https://go.microsoft.com/fwlink/?LinkID=2028265

Проверено системное ведение журнала событий, похоже, это точное сообщение об ошибке:

Приложение '/ LM / W3SVC / 2 / ROOT' с физическим корнем 'C:\ App \ CatalogManager \ 'не удалось загрузить clr и управляемое приложение.Рабочий поток CLR преждевременно завершился

Также было следующее:

Приложение '/ LM / W3SVC / 2 / ROOT' с физическим корнем 'C: \ App \ CatalogManager \' обнаружило неожиданное управляемое исключение,Код исключения = '0xe0434352'.Пожалуйста, проверьте журналы stderr для получения дополнительной информации.

1 Ответ

0 голосов
/ 10 июля 2019

Вы можете напрямую получить его, используя ConfigureLogging(hostcontext,builder) как

 public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
         .UseStartup<Startup>()
        .ConfigureLogging((hostingContext, builder) =>
        {
            var loggingPath = hostingContext.Configuration.GetSection("Config");
            builder.AddFile(options=>
               options.LogDirectory = loggingPath ; 
               //...
            );

        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...