의 appsettings.json을 읽으려면 어떻게 해야 하나요?Net 6 콘솔 애플리케이션
를 작성하려고 합니다.Net 6 콘솔애플리케이션이 appsettings.json 파일을 읽을 수 없습니다.웹 어플리케이션에서는 이것을 사용할 수 있습니다.
var builder = WebApplication.CreateBuilder(args);
하지만 콘솔 어플리케이션에서는 무엇을 사용해야 할까요?이 에러는, program.cs 에 추가하려고 하면 발생합니다. "The name 'WebApplication' does not exist in the current context"
응용 프로그램에 이 두 개의 nuget 패키지를 추가합니다.
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Json
그럼, 을 사용할 수 있습니다.ConfigurationBuilder사용하다appsettings.json파일
var configuration = new ConfigurationBuilder()
.AddJsonFile($"appsettings.json");
var config = configuration.Build();
var connectionString = config.GetConnectionString("ConnectionString");
콘솔 응용 프로그램의 AppSettings에서 값 가져오기
문서 링크: https://learn.microsoft.com/en-us/dotnet/core/extensions/configuration
그러기 위해서는 Nuget 패키지가 필요합니다.
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="6.0.0" />
Microsoft 를 사용하고 있습니다.내선번호설정
// Build a config object, using env vars and JSON providers.
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables()
.Build();
// Get values from the config, given their key and their target type.
Settings settings = config.GetRequiredSection("Settings").Get<Settings>();
// Write the values to the console.
Console.WriteLine($"KeyOne = {settings.KeyOne}");
Console.WriteLine($"KeyTwo = {settings.KeyTwo}");
Console.WriteLine($"KeyThree:Message = {settings.KeyThree.Message}");
// Application code which might rely on the config could start here.
// This will output the following:
// KeyOne = 1
// KeyTwo = True
// KeyThree:Message = Oh, that's nice...
JSON 파일(appsettings.json)
{
"Settings": {
"KeyOne": 1,
"KeyTwo": true,
"KeyThree": {
"Message": "Oh, that's nice..."
}
}
}
UPD: 접근 방식을 확인했는데, 작동했습니다. 내 코드:
// See https://aka.ms/new-console-template for more information
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;
Console.WriteLine("Hello, World!");
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
IConfiguration c = configurationBuilder.AddJsonFile("appsettings.json").AddEnvironmentVariables().Build();
var k = c.GetRequiredSection("Settings").Get<Settings>().KeyOne;
var n = 1;
public class NestedSettings
{
public string Message { get; set; } = null!;
}
public class Settings
{
public int KeyOne { get; set; }
public bool KeyTwo { get; set; }
public NestedSettings KeyThree { get; set; } = null!;
}
.NET 6 Console 앱을 사용하여 다음을 시도해 보십시오.
using IHost host = Host.CreateDefaultBuilder(args).Build();
IConfiguration config = host.Services.GetRequiredService<IConfiguration>();
string con= config.GetValue<string>("ConnectionStrings:conn1");
//OR
string connectionString = config["ConnectionStrings:conn1"];
Console.WriteLine($"Hello, World! {connectionString}");
appsettings.json (속성): (CopyToOutputDirectory = 항상):
"ConnectionStrings": {
"conn1": "Server=localhost;Database=MyDatabase;Trusted_Connection=True",
}
콘솔 어플리케이션에서appsettings.json그리고.user secrets이와 같이 development json 파일도 있을 수 있습니다.
internal class Program
{
internal static IConfigurationRoot Configuration;
public static void Main()
=> new Program().MainAsync().GetAwaiter().GetResult();
private async Task MainAsync()
{
var configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
configurationBuilder.AddUserSecrets(typeof(Program).GetTypeInfo().Assembly, optional: false);
Configuration = configurationBuilder.Build();
...
}
}
그리고 콘솔 앱의 다른 클래스에서는 이렇게 간단히 부를 수 있습니다.
var someSetting = Program.Configuration["SomeSetting"];
강력한 클래스가 필요한 경우 .net core Console application strongtype Configuration on SO를 참조하십시오.
프로젝트 디렉토리에서 appsettings.json 파일을 자동으로 읽기 때문에 아래 코드를 선호합니다.주의하다_.Configuration연결 문자열을 읽기 위해 DbContext 구성 중에 사용했습니다.
var builder = Host.CreateDefaultBuilder(args)
.ConfigureServices(
(_, services) => services
.AddTransient<IService, Service>()
.AddDbContext<ApplicationDbContext>(options =>
options.UseNpgsql(
_.Configuration.GetConnectionString("DefaultConnection"),
b => b.MigrationsAssembly(typeof(ApplicationDbContext).Assembly.FullName)))
);
var host = builder.Build();
var dbContext = host.Services.GetRequiredService<ApplicationDbContext>();
다음 링크에서 정리했습니다.https://bjdejongblog.nl/net-core-6-dependency-injection-console-program/
다음 패키지를 설치합니다.
Install-Package Microsoft.Extensions.Configuration.Json
Install-Package Microsoft.Extensions.Hosting
파일 호출을 작성하다appsettings.json
{
"AllowedHosts": "*",
"ConnectionStrings": {
"defaultConnection": "data source=.;initial catalog=ExchangeGatewayDb;integrated security=true;MultipleActiveResultSets=True;"
}
}
이 코드를 에 추가하다Programe.cs
var hostBuilder = new HostBuilder().ConfigureHostConfiguration(config =>
{
config.AddEnvironmentVariables();
if (args != null)
{
config.AddCommandLine(args);
}
}).ConfigureAppConfiguration((context, builder) =>
{
var env = context.HostingEnvironment;
builder.SetBasePath(AppContext.BaseDirectory)
.AddJsonFile("appsettings.json", optional: false)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true).AddEnvironmentVariables();
var configuration = builder.Build();
var connectionString = configuration["ConnectionStrings:defaultConnection"];
}).ConfigureServices(services =>
{
services.Configure<ConsoleLifetimeOptions>(opts => opts.SuppressStatusMessages = true);
//your code
});
var buildHost = hostBuilder.Build();
buildHost.Run();
DI를 사용하여 IConfiguration 인터페이스를 가져오고 이를 사용하여 앱 설정에 액세스할 수 있습니다.
언급URL : https://stackoverflow.com/questions/71954271/how-can-i-read-the-appsettings-json-in-a-net-6-console-application
'programing' 카테고리의 다른 글
| Uncaughed Error: 크로스 오리진 오류가 발생하였습니다.React는 개발 중인 실제 오류 개체에 액세스할 수 없습니다. (0) | 2023.03.05 |
|---|---|
| Flot과 Angular JS를 통합하는 방법 (0) | 2023.03.05 |
| Angular UI-Router: 부모 뷰를 사용하는 자식 (0) | 2023.03.05 |
| 매핑할 객체 배열 없이 React.js에서 요소를 루프하고 렌더링하려면 어떻게 해야 합니까? (0) | 2023.03.05 |
| 봄에 @EnableWebSecurity를 사용하는 이유는 무엇입니까? (0) | 2023.03.05 |