web.configのASP.NET 5 / EF7接続文字列?

asp.net-core entity-framework-core

質問

ASP.Net 4.5では、 web.config transformationsを利用するためにweb.config接続文字列を置くことができました。開発DBを使用してローカルで作業することができました。その後、プロダクションDBを指すように公開します。私は現在、 web.configではなく接続文字列を保存するためにconfig.jsonファイルを使用していると思われるASP.Net 5とEF 7を使用しています。ファイルを格納するこの新しい方法では、過去のweb.config transformationsようなことをする方法を理解できません。どのようにしてconfig.jsonをセットアップしてこれを行うか、またはweb.configでそれを行うことができるように設定し、EFで文字列を見えるようにすることができますか?

受け入れられた回答

web.config変換構文は、XML形式のデータを対象としています。新しい設定はJSON形式のファイルで構成され、ステージングシナリオは非常に簡単に実装できます。

まずASP.NETサポートでは、 ASPNET_ENV環境変数を使用して、またはlaunchSettings.jsonファイルでHosting:Environmentを設定することで、ターゲット環境を設定できます(プロジェクトのPropertiesフォルダを参照してください)。ファイルlaunchSettings.jsonは、プロジェクトのプロパティでVisual Studioで変更できます。 1つは、最初に "プロファイル"

ここに画像の説明を入力

すべてのプロファイルに対して設定を行います。代わりに、ファイルProperties\launchSettings.json手動で編集することもできProperties\launchSettings.json

hosting.jsonなどの一部の設定ファイルは、ステージングを使用して自動的に動作します。たとえば、 hosting.jsonhosting.Development.jsonを指定し、 server.urlshosting.jsonを指定するなどして、異なるポートと異なるインタフェースのバインディングを設定できます。

ロジックをステージング含めるにはappsettings.jsonのコンストラクタ修正する必要が1 StartupにクラスをStartup.cs 。例えば:

public class Startup
{
    public static IConfigurationRoot Configuration { get; set; }

    public Startup(IHostingEnvironment env)
    {
        // Set up configuration sources.
        var builder = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
    }

    public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddMvc()
            .AddJsonOptions(options => {
                options.SerializerSettings.ContractResolver =
                    new CamelCasePropertyNamesContractResolver();
            });
        services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext<MyContext>(options => {
                options.UseSqlServer(Configuration["Data:ConnectionString"]);
            })
            .AddDbContext<SM9Context>(options => {
                options.UseSqlServer(Configuration["Data:SM9ConnectionString"]);
            });
    }
}

上記のコードは、 ConfigurationプロパティにConfiguration保存し、次にConfigureServicesを使用してMyContextおよびSM9ContextデータベースコンテキストをSM9Contextます。たとえば、すべての生産的な構成を持つメインのappsettings.jsonファイルを作成し、 appsettings.Development.jsonファイルを作成して、2つのData:ConnectionStringData:SM9ConnectionStringから1つだけオーバーライドする接続文字列を作成appsettings.Development.jsonます。

{
  "Data": {
    "ConnectionString": "Server=..."
  }
}

ASP.NETは、 appsettings.jsonファイルとオプションのappsettings.Development.jsonファイルの両方を組み合わせて、完全な設定パラメータセットを作成します。

この記事とドキュメントの一部では、ASP.NET 5でステージングを使用する方法について説明しています。


人気のある回答

このようなことをして、さまざまな* .jsonファイルからconfigsを引き出すことができます。以下はそれらを環境または環境変数に基づいています。

var builder = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
    .AddEnvironmentVariables();

ASPNETシークレットマネージャーを使用することもできます。

アクセスするコンフィグレーションごとに、コンフィグレーション値の設定を上書きします。これは、変数が最後に設定されたものを反映することを意味します。

設定に関するドキュメントをチェックしてください。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ