2016-05-19 28 views
14

Đoạn mã sau được lấy từ các ví dụ tại docs.asp.net.Cấu hình các tùy chọn từ IConfigurationRoot không hoạt động?

public void ConfigureServices(IServiceCollection services) 
{ 
    // Setup options with DI 
    services.AddOptions(); 

    // Configure MyOptions using config 
    services.Configure<MyOptions>(Configuration); 

    // Configure MyOptions using code 
    services.Configure<MyOptions>(myOptions => 
    { 
     myOptions.Option1 = "value1_from_action"; 
    }); 

Các cuộc gọi đến services.Configure<MyOptions>(Configuration); gây ra một lỗi biên dịch:

cannot convert from 'Microsoft.Extensions.Configuration.IConfigurationRoot' to 'System.Action'

thủ thiết lập các tùy chọn hoạt động tốt. Tôi có thiếu một cái gì đó thực sự rõ ràng ở đây?

Trả lời

20

tôi đã cùng một vấn đề và tôi phát hiện ra bạn cần phải thêm phần mở rộng này để dự án của bạn:

Microsoft.Extensions.Options.ConfigurationExtensions

+4

Cụ thể hơn, là sự phụ thuộc trong project.json – robbpriestley

+0

Làm việc cho tôi. –

3

Bạn cần phải thêm gói NuGet sau để ASP cốt lõi của bạn Dự án nếu bạn muốn cấu hình các cấu hình mạnh mẽ gõ theo cách đó.

Microsoft.Extensions.Options.ConfigurationExtensions 

Phương pháp mở rộng chứa trong gói sẽ cho phép bạn định cấu hình cấu hình mạnh theo cách bạn muốn và cách hiển thị hầu hết các hướng dẫn.

services.Configure<MyOptions>(Configuration); 

Ngoài ra, bạn có thể thêm một gói chất kết dính:

Microsoft.Extensions.Configuration.Binder 

Cấu hình sau đó sẽ giống như thế này:

services.AddOptions(); 
services.Configure<MyOptions>(x => Configuration.Bind(x)); 

Đây là nhược điểm của việc có rất nhiều mô-đun đóng gói tăng tiện ích mở rộng. Nó được dễ dàng để mất theo dõi của nơi chức năng tồn tại.

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