C# 如何在asp.net核心控制台应用程序的程序类中从appsettings.json获取值
请告诉我如何从“Program.cs”中的appsettings.json获取值。如果我从“Startup.cs”开始,如下所示: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
{
"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的属性设置为“CopyToOutputDirectory”或“Copy if Newer”。非常感谢!先生,我做了必要的更新。我想差不多了。但问题是,字符串Url仍然为空。你能再帮点忙吗?非常感谢。请参阅我的上述编辑。@Ibanez1408我已更新了我的答案。您可以再试一次。先生,由于某些原因,appsettings.json中的“Url”属性找不到。我是否正确创建了appsettings.json?即使在启动时,当我尝试访问它时,也会得到null。请查看更新。@Ibanez1408这是因为在appsettings.json
中,您已将Url
(在我的示例中)替换为ApplicationUrl
。使用context.Configuration[“ApplicationUrl”]重试我知道了,先生。我只需要将appsettings.json的属性设置为“CopyToOutputDirectory”或“Copy if Newer”。非常感谢!