Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Program.cs中读取和使用appsettings.json?_C#_Asp.net Core - Fatal编程技术网

C# 在Program.cs中读取和使用appsettings.json?

C# 在Program.cs中读取和使用appsettings.json?,c#,asp.net-core,C#,Asp.net Core,我正在尝试将我的应用程序的日志配置为使用指定路径,但我尝试访问Program.cs文件中的appsettings.json时似乎无法正常工作。它抛出一个错误,应用程序无法启动 我发现: 并尝试了其中的建议,但似乎不起作用 My Program.cs文件: public class Program { public static void Main(string[] args) { var config = new ConfigurationBuilder()

我正在尝试将我的应用程序的日志配置为使用指定路径,但我尝试访问Program.cs文件中的appsettings.json时似乎无法正常工作。它抛出一个错误,应用程序无法启动

我发现:

并尝试了其中的建议,但似乎不起作用

My 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>();
}
当我尝试启动我的应用程序时,会抛出以下错误消息:

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
检查系统事件日志,这似乎是确切的错误消息:

物理根为“C:\App\CatalogManager\”的应用程序“/LM/W3SVC/2/ROOT”无法加载clr和托管应用程序。CLR工作线程过早退出

还有一点:


物理根为“C:\App\CatalogManager\”的应用程序“/LM/W3SVC/2/ROOT”遇到意外的托管异常,异常代码为“0xe0434352”。有关更多信息,请查看stderr日志。

您可以使用
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 ; 
               //...
            );

        });
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.ConfigureLogging((hostingContext,builder)=>
{
var loggingPath=hostingContext.Configuration.GetSection(“配置”);
builder.AddFile(选项=>
options.LogDirectory=loggingPath;
//...
);
});

请更具体地说明抛出的错误。您在问题中引用的错误消息为您提供了大量建议,说明如何进一步解决问题。在将错误信息粘贴到问题中之前,您是否已经阅读了错误信息?如果您已经遵循了这些疑难解答提示,您发现了什么?在我尝试进行疑难解答时添加了一些详细信息。您是否尝试遵循以下建议:“启用记录应用程序进程的stdout消息”?
 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 ; 
               //...
            );

        });