web-dev-qa-db-ja.com

新しい.Net Core 2サイトがConfiguration.GetConnectionStringを認識しない

空のASP.NET Core 2テンプレートから新しいWebサイトを作成し、セットアップを支援する Microsoft Entity Frameworkチュートリアル に従います。ある時点で、コードを追加します。

_services.AddDbContext<SchoolContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
_

_Startup.cs_のConfigureServices()メソッドへ。私はこれを行いましたが、私のプロジェクトでは、Visual Studioは_Configuraiton.GetConnectionString_のConfigurationの下に小さな赤い線を表示します

usingステートメントまたはパッケージが欠けていると思っていましたが、Visual Studio 2017のクイックアクションではusingステートメントを特定できず、_Microsoft.AspNetCore.All_パッケージを持っていますインストールされているので、すべてのパッケージが必要です。

Configurationが認識されない原因は何ですか?

編集:エラーは:

「構成」という名前は現在のコンテキストに存在しません

_public void ConfigureServices(IServiceCollection services)
{
     services.AddDbContext<CollectionContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
     services.AddMvc();
}
_
14

DI経由でIConfigurationオブジェクトを取得する必要があります。
IConfiguration引数をStartupのコンストラクターに追加し、Configurationプロパティに割り当てます。

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

public IConfiguration Configuration { get; }

それがテンプレートの一部であるため、あなたがそれを持っていないことに驚いています。

33
gldraphael

1#NuGetパッケージをインストールします:Microsoft.Extensions.Configuration
2#追加:using Microsoft.Extensions.Configuration;
3#この行をコードに追加したことに注意してください:public IConfiguration Configuration { get; }

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

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseHttpsRedirection();
            app.UseRouting();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers(); 
            });
        }
    }
1
Stephan