2017-11-21 15 views
7

비즈니스 클래스에서 appsettings.json 파일 (섹션 : placeto)의 속성 목록을 읽어야하지만 액세스 할 수 없습니다. 나는이 속성들을 공개해야한다..NET Core 2 클래스의 appsettings.json 읽기

은 내가 Program 클래스 파일을 추가 :이

Class program

appsettings.json :

{ 
    "Logging": { 
    "IncludeScopes": false, 
    "LogLevel": { 
     "Default": "Warning" 
    } 
    }, 
    "placeto": { 
    "login": "fsdfsdfsfddfdfdfdf", 
    "trankey": "sdfsdfsdfsdfsdf" 
    } 
} 
+1

가능한 복제본 https://stackoverflow.com/questions/46632090/mvc-core-2-0-how-to-use-an-appsettings-json-file-via-configuration/46632521#46632521 – anserk

+0

이 설명서 MS에서 그것을 설명하는 방법 => https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration?tabs=basicconfiguration – CodeNotFound

+0

하지만 사용자 정의 클래스에서 읽을 필요가, 예 컨트롤러 및 나는 피난처에 있습니다. 몇 가지 옵션을 시도했습니다. .Net 표준에서 사용 된'string userName = System.Configuration.ConfigurationManager.AppSettings [ "PFUserName"];'.Net 코어의 동등한 @codeNotFound를 읽으려는 경우 –

답변

2

첫째, 사용의 기본 program.cs 이미 당신을 위해 구성을 추가

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     BuildWebHost(args).Run(); 
    } 

    public static IWebHost BuildWebHost(string[] args) => 
     WebHost.CreateDefaultBuilder(args) 
      .UseStartup<Startup>() 
      .Build(); 
} 

두 번째 클래스에 대한 인터페이스를 생성하고 Iconfiguration 필드 만들어 의존성 주입과 구성을 전달합니다

public Test(IConfiguration configuration) 
{ 
    Configuration = configuration; 
} 

그렇게 Dependency Injection를 사용하기 위해 클래스에 대한 인터페이스를 만듭니다

private readonly IConfiguration Configuration; 

다음 생성자로 전달할를 IConfiguration을 전달하지 않고 인스턴스를 생성 할 수 있습니다.

다음은 클래스 및 인터페이스입니다.

,
using Microsoft.Extensions.Configuration; 

namespace GetUserIdAsyncNullExample 
{ 
    public interface ITest 
    { 
     void Method(); 

    } 
    public class Test : ITest 
    { 
     public Test(IConfiguration configuration) 
     { 
      Configuration = configuration; 
     } 

     private readonly IConfiguration Configuration; 
     public void Method() 
     { 
      string here = Configuration["placeto:login"]; 
     } 
    } 
} 

그런 다음 startup.cs에 호출하여 클래스에 대한 Dependency Injection를 구현 :

services.AddSingleton< ITest, Test>(); 

당신의 ConfigureServices 방법에 지금

당신이 Dependency Injection 너무

으로 사용하기 위해 클래스에 클래스 인스턴스를 전달할 수 있습니다

예를 들어 ExampleController에 수업을 사용하려면 다음을 수행하십시오.

private readonly ITest _test; 

    public ExampleController(
     ITest test 
    ) 
    { 
     _test = test; 

    } 

이제 컨트롤러의 어느 위치에서나 액세스 할 수있는 _test 인스턴스가 있습니다.