だから私はついにコアを見て回って、最初のハードルに落ちました。 Pluralsight ASP.NET Core Fundamentalsコースをフォローしていますが、appbuilders.jsonファイルを構成ビルダーに追加しようとすると例外が発生します。
public Startup()
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json");
Configuration = builder.Build();
}
私が取得しているエラーは、構成ファイル「appsettings.json」が見つかりませんでした。オプションではありません。ただし、コースビデオのように、ソリューションの直下に作成しました。
助言がありますか?
乾杯、
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json");
Configuration = builder.Build();
}
これでうまくいくようです。ただし、これが適切な方法であるかどうかは不明です。ちょっとハックのように感じます。
以下のパッケージを追加する必要があります。
"Microsoft.Extensions.Configuration.Json": "1.0.0"
別の方法:
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();
}
}
Configure
メソッド内:
app.Run(async (context) =>
{
// Don't use:
// string greeting = Configuration["greeting"]; // null
string greeting = Configuration.GetSection("greeting").Value;
await context.Response.WriteAsync(greeting)
});
これから私が見つけた代替ソリューション ブログ投稿 も機能します。 Startup.csファイルのStartupメソッドシグネチャを変更する必要がないという利点もあります。
BuildOptionsセクションで、ファイルの名前でcopyToOutputを追加します。
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true,
"copyToOutput": "appsettings.json"
},
.... The rest of the file goes here ....
実際には、環境変数からルートパスを提供する必要があるため、ルートパスを提供するためにIHostingEnvironment
参照を渡す必要があります。
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json");
Configuration = builder.Build();
}
addJsonFileメソッドが見つからない場合は、using Microsoft.Extensions.Configuration.Json;
を追加する必要があります
Appsettings.json->プロパティを右クリックして、出力ディレクトリにコピーが「常にコピー」に設定されていることを確認します
.NET Core 2.0では、.csprojファイルを更新してJSONファイルを出力ディレクトリにコピーし、次のようにアクセスできるようにします。
<ItemGroup>
<Folder Include="wwwroot\" />
<None Include="appsettings.json" CopyToOutputDirectory="Always" />
</ItemGroup>
_Startup.cs
_に.SetBasePath(env.ContentRootPath)
を追加することを提案する回答は、前のステップに依存します。
最初、行.UseContentRoot(Directory.GetCurrentDirectory())
を次のように_Program.cs
_のWebHostBuilder構造に追加します。
_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();
}
}
_
Then以下が機能します:
_public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json");
Configuration = builder.Build();
}
_
Microsoft.ExtensionsからConfiguration.Jsonパッケージをインストールするか、単にMicrosoft.Extensions.Configuration.Jsonをyに追加する必要があります。
プロジェクトデバッグプロパティで何かを行った場合、開始ディレクトリを誤って上書きした可能性があります。
Project -> Right-click -> Properties -> Debug -> Profile
を選択し、Working Directory
のエントリを確認します。
最も単純なのは、空白であることです。