从类库项目中访问appsettings.json文件设置
我知道如何在web项目上设置appsettings.json
文件。但是你能告诉我如何从类库项目中访问它吗?
我可以在web项目中按如下所示对其进行配置。那么如何从类库项目中访问这些值? 那可能吗 ?
public class MyConfig { public string ApplicationName { get; set; } public int Version { get; set; } } public class Startup { public IConfigurationRoot Configuration { get; set; } public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) Configuration = builder.Build(); } } public void ConfigureServices(IServiceCollection services) { services.AddMvc(); // Add functionality to inject IOptions services.AddOptions(); // Add our Config object so it can be injected services.Configure(Configuration); } public class HomeController : Controller { private readonly IOptions config; public HomeController(IOptions config) { this.config = config; } // GET: // public IActionResult Index() => View(config.Value); }
您需要获取该部分然后绑定它,更改它
// Add our Config object so it can be injected services.Configure(Configuration);
至
// Add our Config object so it can be injected services.Configure(option => Configuration.GetSection("MyConfig").Bind(option));
然后你将在HomeController
或你注入它的任何其他地方获得值。
public class HomeController : Controller { private readonly IOptions config; public HomeController(IOptions config) { this.config = config; } public IActionResult Index() { var value = config.Value.ApplicationName; var vars = config.Value.Version; return View(); } }
appsettings.json
{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } }, "MyConfig": { "ApplicationName": "My Application Name", "Version": 1 } }
我们如何将此另外称为Web项目?
Asp.Net Core DI在创建控制器之前解决所有依赖关系。 因此,我们可以创建一个接口并实现它。 然后我们可以将它注入控制器并从那里访问appsettings.json
设置。
ICategory.cs
public interface ICategory { IOptions config; IQueryable Get(); }
Category.cs
public class Category : ICategory { private readonly IOptions config; public Category(IOptions config) { this.config = config; } public Categories Get(long id) { var value = config.Value.ApplicationName; var vars = config.Value.Version; return category; } }
CategoryController.cs
public CategoriesController(ICategory category) { this.category = category; }
当我们调用category.Get()
方法时,我们可以访问该方法中的appsettings.json
设置。
在Startup.cs
ConfigureServices
方法中注册它
services.AddTransient();
- 正则表达式默认ASP.NET核心标识密码
- 如何在ASP.NET Core 2.1中获取客户端IP地址
- Asp Net Core Web推送通知
- MVC 6 Controller中的ControllerContext和ViewEngines属性在哪里?
- 找不到ASP.NET 5.0中的HttpClient?
- ASP.NET Core Routing适用于VS IIS Express,但不适用于IIS 10
- 从csproj引用ASP.NET xproj
- entity framework核心创建和更新字段
- 使用RequireHttpsAttribute ASP.NET Core的HTTP错误310 ERR_TOO_MANY_REDIRECTS