web-dev-qa-db-fra.com

Le nouveau site .Net Core 2 ne reconnaît pas Configuration.GetConnectionString

Je suis en train de créer un nouveau site Web à partir d'un modèle ASP.NET Core 2 vide et de suivre le Microsoft Entity Framework Tutorial pour m'aider à obtenir la configuration. À un moment donné, vous avez ajouté le code:

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

À la méthode ConfigureServices() de Startup.cs. Je l'ai fait, mais dans mon projet, Visual Studio m'a donné cette petite ligne rouge sous Configuration dans le Configuraiton.GetConnectionString

J'avais pensé qu'il me manquait une instruction using ou même un package, mais les actions rapides de Visual Studio 2017 n'identifient pas une instruction using à utiliser et j'ai le Microsoft.AspNetCore.All package installé donc je devrais avoir tous les packages.

Qu'est-ce qui me manque qui rend le Configuration non reconnu?

Edit: L'erreur est:

Le nom 'Configuration' n'existe pas dans le contexte actuel

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

Vous devez obtenir l'objet IConfiguration via DI.
Ajoutez un argument IConfiguration au constructeur de votre Startup et affectez-le à une propriété Configuration:

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

public IConfiguration Configuration { get; }

Je suis surpris de voir que vous ne l'avez pas, car cela fait partie du modèle.

33
gldraphael

1 # installez le package NuGet: Microsoft.Extensions.Configuration
2 # add: utilisation de Microsoft.Extensions.Configuration;
3 # Notez que j'ai ajouté cette ligne dans le code: 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