Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.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# 如何在asp.net核心控制台应用程序的程序类中从appsettings.json获取值_C#_Asp.net Core_.net Core - Fatal编程技术网

C# 如何在asp.net核心控制台应用程序的程序类中从appsettings.json获取值

C# 如何在asp.net核心控制台应用程序的程序类中从appsettings.json获取值,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,请告诉我如何从“Program.cs”中的appsettings.json获取值。如果我从“Startup.cs”开始,如下所示: { "Url": "https://example.com" } 型号 class AppConfiguration { public string UrlProperty { get; set; } } Startup.cs services.AddSingleton(Configur

请告诉我如何从“Program.cs”中的appsettings.json获取值。如果我从“Startup.cs”开始,如下所示:

{
  "Url": "https://example.com"
}
型号

class AppConfiguration
    {
        public string UrlProperty { get; set; }
    }
Startup.cs

services.AddSingleton(Configuration.GetSection("Url").Get<AppConfiguration>());
public static string Url { get; set; }
public static AppConfiguration configurtion { get; set; }

public Program(AppConfiguration configuration)
{
    Url = configuration.ToString();
}

static void Main(string[] args)
{
    CreateWebHostBuilder(args).Run();
}

public static IWebHost CreateWebHostBuilder(string[] args) =>
     WebHost.CreateDefaultBuilder(args)
     .UseStartup<Startup>()
     .UseKestrel((hostingContext, options) =>
     {
         var ipAddress = IPAddress.Parse(Url); // ERROR HERE
             options.Listen(ipAddress, 9001);
     }).Build();
无法识别
配置.GetSection(“Url”)
。如何从Program.Main中的appsettings.json获取值

更新 根据“Tan”,我对我的
程序.cs
进行了必要的编辑。我想我快要解决了。只是加载时“Url”仍然为空。请参阅我的编辑:

static void Main(string[] args)
        {
            var builder = CreateWebHostBuilder(args);
            builder.ConfigureLogging((context, builder) =>
            {
                Url = context.Configuration["ApplicationUrl"];
            }).Build().Run();
        }

       
        public static IHostBuilder CreateWebHostBuilder(string[] args) =>
           Host.CreateDefaultBuilder(args)
           .ConfigureWebHostDefaults(webBuilder =>
           {
               webBuilder.UseStartup<Startup>()
               .UseKestrel((hostingContext, options) =>
               {
                   var ipAddress = IPAddress.Parse(Url);
                   options.Listen(ipAddress, 9001);
                   options.Limits.MaxRequestBodySize = null;
               });
           });
更新2 这是appsettings.json的

{
  "AllowedHosts": "*",
  "AcceptedOrigin": [ "http://localhost:4200" ],
  "ApplicationUrl":  "192.168.1.4"
}
{
  "AllowedHosts": "*",
  "AcceptedOrigin": [ "http://localhost:4200" ],
  "ApplicationUrl":  "192.168.1.4"
}
静态void Main(字符串[]参数) {

CreateHostBuilder(args.Build().Run();
}
公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup()
.UseKestrel((上下文、选项)=>
{
options.Limits.MaxRequestBodySize=null;
// "192.168.1.4"
字符串url=context.Configuration[“url”];
var ipAddress=System.Net.ipAddress.Parse(url);
});
});
这是我在
Startup.cs中得到的:

程序.cs
中:


在文件
appsettings.json
中,您可以像这样定义
Url
属性:

{
  "Url": "https://example.com"
}
在文件
Program.cs
中的
Main
方法内,您可以通过
ConfigureLogging
扩展方法访问该属性:

public class Program
{
    public static void Main(string[] args)
    {
        var builder = CreateHostBuilder(args);

        builder.ConfigureLogging((context, builder) => {
            // "https://example.com"
            string url = context.Configuration["Url"];

            // do stuff...
        }).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>()
            .UseKestrel(options =>
            {
                options.Limits.MaxRequestBodySize = null;
            });
        });
}
截图:


在文件
appsettings.json
中,您可以像这样定义
Url
属性:

{
  "Url": "https://example.com"
}
在文件
Program.cs
中的
Main
方法内,您可以通过
ConfigureLogging
扩展方法访问该属性:

public class Program
{
    public static void Main(string[] args)
    {
        var builder = CreateHostBuilder(args);

        builder.ConfigureLogging((context, builder) => {
            // "https://example.com"
            string url = context.Configuration["Url"];

            // do stuff...
        }).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>()
            .UseKestrel(options =>
            {
                options.Limits.MaxRequestBodySize = null;
            });
        });
}
截图:


先生,我做了必要的更新。我想差不多了。但问题是,字符串Url仍然为空。你能再帮点忙吗?非常感谢。请参阅我的上述编辑。@Ibanez1408我已更新了我的答案。您可以再试一次。先生,由于某些原因,appsettings.json中的“Url”属性找不到。我是否正确创建了appsettings.json?即使在启动时,当我尝试访问它时,也会得到null。请查看更新。@Ibanez1408这是因为在
appsettings.json
中,您已将
Url
(在我的示例中)替换为
ApplicationUrl
。使用
context.Configuration[“ApplicationUrl”]重试appsettings.json
中,您已将
Url
(在我的示例中)替换为
ApplicationUrl
。使用
context.Configuration[“ApplicationUrl”]重试