我正在致力于将现有的ASP.NET MVC应用迁移到ASP.NET核心。该解决方案有几个类库(提供数据访问、服务等)。其中许多类库使用从web.config文件获取配置的静态ConfigurationManager.AppSettings["..."]方式。
然而,在ASP.NET核心应用程序中,没有web.config文件,而且ConfigurationManager似乎无法读取appsettings.json。
我真的很喜欢ASP.NET核心中的新配置系统,并在web应用程序中使用它。
但是,有没有一种“简单”的方法来迁移这些类库,而不必重写它们来使用新的配置系统呢?对于读取appsettings.json的静态ConfigurationManager.AppSettings["..."]调用,有什么基本的替代方法吗?(注意:我们最终会重写它们,但我们宁愿一次只写一段)
发布于 2019-01-29 02:38:10
如果你使用的是.NET标准2.0,你可以添加一个对System.Configuration.ConfigurationManager NuGet包的引用来访问appSettings。
您可以将app.Config文件(而不是web.Config)添加到ASP.NET核心项目中以存储appSettings。它将被复制到输出文件夹中,并在项目构建期间重命名为AppName.dll.config。
发布于 2019-01-29 02:33:05
免责声明:我没有尝试使用类库,但这在LinqPad中是有效的:
void Main()
{
var config = new Microsoft.Extensions.Configuration.ConfigurationBuilder()
.AddInMemoryCollection(new Dictionary<string, string>
{
["test"] = "test",
["test2:test"] = "test2"
})
.Build();
foreach (var pair in config.AsEnumerable())
{
// Skips the (test2 = null) pair
if (pair.Value != null)
{
ConfigurationManager.AppSettings.Set(pair.Key, pair.Value);
}
}
ConfigurationManager.AppSettings["test"].Dump();
ConfigurationManager.AppSettings["test2:test"].Dump();
}您可以在您的初始化代码中放入类似这样的内容。它设置可用于System.Configuration应用程序设置集合的所有值。
https://stackoverflow.com/questions/54407914
复制相似问题