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é,
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.
vous devez ajouter le paquet ci-dessous:
"Microsoft.Extensions.Configuration.Json": "1.0.0"
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)
});
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 ....
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;
.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>
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.
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();
}