如何在Core 2.0中的ConfigurationBuilder中设置基本路径.
我用Google搜索,发现这个问题,这个来自微软的文档,以及2.0文档在线,但他们似乎使用的版本Microsoft.Extension.Configuration从1.0.0-beta8.
我想读appsettings.json.在Core 2.0中有没有新的方法?
using System;
using System.IO;
using Microsoft.Extensions.Configuration;
namespace ConsoleApp2
{
class Program
{
public static IConfigurationRoot Configuration { get; set; }
static void Main(string[] args)
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory()) // <== compile failing here
.AddJsonFile("appsettings.json");
Configuration = builder.Build();
Console.WriteLine(Configuration.GetConnectionString("con"));
Console.WriteLine("Press a key...");
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
appsetting.json
{
"ConnectionStrings": {
"con": "connection string"
}
}
Run Code Online (Sandbox Code Playgroud)
更新: 除了添加Microsoft.Extensions.Configuration.FileExtensions如下图所示的设置我还需要添加 …
通过项目中的一种IConfiguration方法移动课程后,GetValue<T>停止工作。用法是这样的:
using Newtonsoft.Json;
using System;
using System.Net;
using System.Text;
using Microsoft.Extensions.Configuration;
namespace Company.Project.Services
{
public class MyService
{
private readonly IConfiguration _configuration;
public string BaseUri => _configuration.GetValue<string>("ApiSettings:ApiName:Uri") + "/";
public MyService(
IConfiguration configuration
)
{
_configuration = configuration;
}
}
}
Run Code Online (Sandbox Code Playgroud) 要访问类库中的App Keys,我们是否需要在每个需要访问AppKey的类库和类中执行以下代码?
public static IConfigurationRoot Configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
Run Code Online (Sandbox Code Playgroud)
这是我在Microsoft文档中发现的,但这看起来非常多余.
项目中的启动类如下所示
public class Startup
{
public IConfigurationRoot Configuration { get; set; }
public Startup()
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json");
Configuration = builder.Build();
}
public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFramework().AddEntityFrameworkSqlServer()
.AddDbContext<DbContext>(options =>
options.UseSqlServer(Configuration["Data:MyDb:ConnectionString"]));
}
}
Run Code Online (Sandbox Code Playgroud)
那么我应该如何在项目的每个类中注入这个" IConfigurationRoot ".我是否必须在每个类库中重复此Startup类?为什么这不是.NET Core Framework的一部分?
我在下面有一些 appsetting.json
{
"MyConfig": {
"FolderAnnouncement": "Duyuru\\",
"BaseMediaUrl": "D:\\YoungTalent\\YTPanel\\YTPanel\\wwwroot\\images\\"
},
"ConnectionStrings": {
"MySqlCon": "Server=localhost;Database=kariyer_portal;Uid=root;Pwd=1234;",
"MsSqlCon": "Server=localhost\\SQLEXPRESS;Database=kariyer_portal;Trusted_Connection=True;ConnectRetryCount=0"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}
Run Code Online (Sandbox Code Playgroud)
我有一个类 MyConfig。
namespace YTPanel.Models.Model
{
public interface ITest { string GetFolders(string param); }
public class MyConfig: ITest
{
public MyConfig(IConfiguration configuration)
{
Configuration = configuration;
}
private readonly IConfiguration Configuration;
public string BaseMediaUrl { get; set; }
public string FolderAnnouncement { get; set; }
public string GetFolders(string param)
{
string here = …Run Code Online (Sandbox Code Playgroud)