2016-11-07 13 views
6

Tôi cần thiết lập một vài phụ thuộc (dịch vụ) trong phương thức ConfigureServices trong ứng dụng web ASP.NET Core 1.0.Trên thực tế đọc AppSettings trong giai đoạn ConfigureServices trong ASP.NET Core

Vấn đề là dựa trên cấu hình JSON mới, tôi cần thiết lập dịch vụ này hoặc dịch vụ khác.

tôi dường như không thể thực sự đọc các thiết lập trong ConfigureServices giai đoạn của cuộc đời ứng dụng:

public void ConfigureServices(IServiceCollection services) 
{ 
    var section = Configuration.GetSection("MySettings"); // this does not actually hold the settings 
    services.Configure<MySettingsClass>(section); // this is a setup instruction, I can't actually get a MySettingsClass instance with the settings 
    // ... 
    // set up services 
    services.AddSingleton(typeof(ISomething), typeof(ConcreteSomething)); 
} 

tôi sẽ cần phải thực sự đọc phần đó và quyết định những gì để đăng ký ISomething (có thể là một loại khác nhau hơn ConcreteSomething).

+2

Xem http://stackoverflow.com/q/40397648/5426333 –

+0

@ademcaglin: Cảm ơn! Điều đó là vậy đó. Tôi đã bỏ phiếu cho việc đóng câu hỏi của riêng mình như một bản sao của câu hỏi đó :) –

+0

Câu trả lời được liên kết là lấy các giá trị từ tệp cấu hình, chứ không phải tệp appsettings.json. – im1dermike

Trả lời

1

Bắt đầu từ ASP.NET Core 2.0, chúng tôi thiết lập cấu hình trong lớp Program khi tạo ví dụ WebHost. Ví dụ về thiết lập như:

return new WebHostBuilder() 
    .UseKestrel() 
    .UseContentRoot(Directory.GetCurrentDirectory()) 
    .ConfigureAppConfiguration((builderContext, config) => 
    { 
     IHostingEnvironment env = builderContext.HostingEnvironment; 

     config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) 
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true); 
    }) 

Trong số những người khác, điều này cho phép sử dụng cấu hình trực tiếp trong Startup lớp, nhận được một thể hiện của IConfiguration qua constructor injection (cảm ơn bạn, được xây dựng trong container DI):

public class Startup 
{ 
    public Startup(IConfiguration configuration) 
    { 
     Configuration = configuration; 
    } 

    public IConfiguration Configuration { get; } 

    ... 
} 
+0

yeah! đã làm cho tôi. cuối cùng tôi có thể nhận được công cụ của tôi từ mục json để chuẩn bị dịch vụ của tôi: \ – AmiNadimi

Các vấn đề liên quan