ASP.NET Core 1.0 ConfigurationBuilder().AddJsonFile ("appsettings.JSON"); dossier non trouvé

donc j'ai finalement réussi à regarder Core et je suis tombé au premier obstacle. Je suis le Pluralsight ASP.NET cours de base et je reçois une exception en essayant d'ajouter trop les appsettings.fichier json au constructeur de configuration.

public Startup()
{
    var builder = new ConfigurationBuilder()
        .AddJsonFile("appsettings.json");

    Configuration = builder.Build();
}

l'erreur que j'obtiens est l'application du fichier de configuration.json " n'a pas été trouvé et n'est pas une option. Mais j'ai créé directement sous ma solution comme dans la vidéo du cours.

tous des suggestions?

santé,

22
demandé sur Ajay2707 2016-07-09 17:06:07

8 réponses

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json");

    Configuration = builder.Build();
}

cela semble faire l'affaire. Cependant incertain c'est la bonne façon de le faire. Kinda se sent comme un hack.

21
répondu Zhorian 2016-07-09 14:16:37

vous devez ajouter le paquet ci-dessous:

    "Microsoft.Extensions.Configuration.Json": "1.0.0"
18
répondu user6655970 2016-07-29 20:51:11

une Autre façon:

appsettings.json:

{
    "greeting": "A configurable hello, to you!"
}

Startup.cs:

using Microsoft.Extensions.Configuration; // for using IConfiguration
using System.IO; // for using Directory

public class Startup
{
    public IConfiguration Configuration { get; set; }

    public Startup()
    {
        var builder = new ConfigurationBuilder();
        builder.SetBasePath(Directory.GetCurrentDirectory());
        builder.AddJsonFile("appsettings.json");

        Configuration = builder.Build();
    }    
}

Dans le Configure méthode:

app.Run(async (context) =>
{
    // Don't use:
    // string greeting = Configuration["greeting"]; // null

    string greeting = Configuration.GetSection("greeting").Value;
    await context.Response.WriteAsync(greeting)
});
12
répondu Tân Nguyễn 2016-09-15 12:34:03

Une autre solution que j'ai trouvé à partir de ce blog fonctionne aussi bien. Il a l'avantage supplémentaire de ne pas avoir à modifier le Démarrage.signature de la méthode de démarrage du fichier cs.

dans la section buildOptions ajouter copyToOutput avec le nom du fichier.

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true,
    "copyToOutput": "appsettings.json"
  },
  .... The rest of the file goes here ....
9
répondu Dzejms 2016-07-25 15:55:00

en fait pour cela vous devez fournir le chemin de racine de votre variable d'environnement donc vous devez passer IHostingEnvironment référence pour fournir du chemin de la racine:

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
                          .SetBasePath(env.ContentRootPath)
                          .AddJsonFile("appsettings.json");
    Configuration = builder.Build();
}

et si vous ne pouvez pas trouver la méthode AddJsonFile alors vous devez ajouter using Microsoft.Extensions.Configuration.Json;

6
répondu bhatt ravii 2017-07-20 11:44:37

.NET Core 2.0, vous devez mettre à jour les .csproj fichier à copier le fichier JSON dans le répertoire de sortie de sorte qu'il peut être consulté, comme suit:

<ItemGroup>
    <Folder Include="wwwroot\" />
    <None Include="appsettings.json" CopyToOutputDirectory="Always" />
</ItemGroup>
1
répondu SchattenJager 2018-03-25 23:13:51

si vous avez fait quelque chose avec les propriétés de débogage du projet, alors vous avez peut-être par inadvertance écrasé le répertoire de départ:

Project -> Right-click -> Properties -> Debug -> Profile puis regardez l'entrée dans Working Directory.

le plus simple est qu'il soit vide.

0
répondu Chris F Carroll 2017-09-15 16:47:00

les réponses qui suggèrent d'ajouter .SetBasePath(env.ContentRootPath)Startup.cs dépendre d'une étape préalable.

Premier, ajoutez la ligne .UseContentRoot(Directory.GetCurrentDirectory()) pour votre WebHostBuilder construction Program.cs comme ceci:

public class Program
{
    public static void Main(string[] args)
    {
        var config = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddEnvironmentVariables()
            .Build();

        var host = new WebHostBuilder()
            .UseConfiguration(config)
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseStartup<Startup>()
            .Build();

        host.Run();
    }
}

la suivante:

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json");

    Configuration = builder.Build();
}
0
répondu Groppe 2017-11-08 19:37:40