2017-11-14 9 views
0

私はasp.netコア2 webapiサービスを持っています。私はappsettings.jsonを読んでみたいが、私はそれを理解することはできない。いつものように、私がインターネットを検索すると、最終的には動作しないようなフレームワークのさまざまなバージョンに基づいて、十数の全く異なる回答が得られます。例appsettings.jsonとしてasp.netコアwebapiからappSettingsを読み取る

:私のConfigureServicesでnuget Microsoft.Extensions.ConfigurationとMicrosoft.Extensions.Configuration.Jsonによって追加

"AppSettings": { 
    "Domain": "http://localhost" 
} 

は、第一に、私はこれを試してみました方法を追加しました:

services.AddSingleton<IConfiguration>(Configuration); 

私のControllえー、私は設定を注射さ:

IConfiguration iconfig; 
public ValuesController(IConfiguration iConfig) 
{ 
    iconfig = iConfig; 
} 

それを取得するには:

return "value: " + iconfig.GetValue<string>("AppSettings:Domain"); 

私は、コントローラのコンストラクタが呼ばれ、設定を渡すされて見ることができますが、値は常にnullです。

スタートアップはすでにIConfigurationで渡されていることに気付きました。それは実装のもう一つの変化のケースですか、私は別の何かをする必要がありますか?

私は今、それが再びすべての変更だと、それが自動注入されていますが、コードに従った後、それは実際にあなたがデータを手に入れる方法を言っていないと言う https://joonasw.net/view/aspnet-core-2-configuration-changes

を読んだ[編集] あなたのコントローラ。

+0

を注入 'あなたのコントローラにIConfigurationRoot'してからは、このようなあなたの値にアクセス:の' config [「のAppSettings:ドメインを」] ' – peinearydevelopment

+0

コードあなたは私のために罰金作品を掲載しました。投稿した内容が有効なjsonではないため、_appsettings.json_を修正するだけでした。 – anserk

答えて

0

あなたがここに私の答えを見てとることができます。

https://stackoverflow.com/a/46940811/2410655は基本的にあなたがappsettings.jsonファイルで定義するプロパティと一致するクラスを作成します(答えではAppSettingsクラスです)。

ConfigureServices()には、services.Configure<>を使用してそのクラスを注入します。そのクラスはすべてDI Controllersで利用可能になります。

データにアクセスするには、上記のリンクから@ amanの元の質問の投稿をご覧ください。

public class HomeController : Controller 
{ 
    private readonly AppSettings _mySettings; 

    public HomeController(IOptions<AppSettings> appSettingsAccessor) 
    { 
     _mySettings = appSettingsAccessor.Value; 
    } 
} 
関連する問題