我知道如何从 razor 组件访问 appsetting.json,但如何从 blazor 服务器端项目中的任何类访问?
从剃刀组件我只需注入:
@注入IConfiguration_config
并访问我需要的所有内容,例如:_config.GetConnectionString("default")
但如何在任何班级中做同样的事情呢?当我尝试做的时候
I配置_config;
它说当我想要访问数据时 _config 为空或者是一个未分配的局部变量取决于我写入变量的位置。
我的 appsettings json 文件
{
"StudentBirthdays": [
{ "Anne": "01/11/2000"},
{ "Peter": "29/07/2001"},
{ "Jane": "15/10/2001"},
{ "John": "Not Mentioned"}
]
}
Run Code Online (Sandbox Code Playgroud)
我有一个单独的配置类。
public string GetConfigValue(string key)
{
var value = _configuration["AppSettings:" + key];
return !string.IsNullOrEmpty(value) ? Convert.ToString(value) : string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
我尝试过的是,
list= _configHelper.GetConfigValue("StudentBirthdays");
Run Code Online (Sandbox Code Playgroud)
对于上述内容,我没有得到这些值。
我如何读取这些值(我想分别读取学生的姓名和他的生日)。
任何帮助表示赞赏
我有两个针对 .net 6 的项目,并且没有任何使用用户机密的明确声明(我记得,在以前的版本中需要使用AddUserSecrets())。虽然,一个项目从 获取正确的配置secrets.json,但另一个项目 - 尝试从 获取它appsettings.json。
所以,我想知道,这是什么问题?.net 6 中的行为如何改变?
我有一个具有 DDD 架构的 Azure Function。我的项目结构如下所示:
local.settings.json文件看起来像这样:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"ServiceBusConnectionString": "Endpoint=sb://sb.servicebus.windows.net/;*****"
},
"ConnectionStrings": {
"DefaultConnection": "Server=tcp:*************"
}
}
Run Code Online (Sandbox Code Playgroud)
我的appsettings.json看起来像这样:
{
"ConnectionStrings": {
"DefaultConnection": "*******"
}
}
Run Code Online (Sandbox Code Playgroud)
文件ApplicationDbContextFactory如下所示:
public class ApplicationDbContextFactory : IDesignTimeDbContextFactory<ApplicationDbContext>
{
public ApplicationDbContext CreateDbContext(string[] args)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>();
optionsBuilder.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
return new ApplicationDbContext(optionsBuilder.Options);
}
}
Run Code Online (Sandbox Code Playgroud) 如何强制 Dotnet6 桌面 Winforms 应用程序使用 appsettings.json 而不是 Settings.settings[App.config]?
如果我在 Visual Studio 2022 中创建一个新的桌面应用程序以使用 Dotnet6.0,默认情况下,它会动态创建一个 Settings.settings 文件,然后也会创建一个 App.config 文件(这很奇怪,因为据说该文件已被弃用)在 Dotnet5.0 及更高版本中!)。
不幸的是,所有设置在安装/发布后都嵌入到应用程序中,并且一旦安装,就无法在应用程序文件夹中的任何位置进行更改。
对于较旧的 DotNet4.72 桌面应用程序,app.config 始终位于发布输出中,如果发生更改,应用程序将在执行时很好地读取任何更改。
我想像 Web 应用程序 (dotnet6.0) 一样使用 appsettings.json,并且有很多关于如何使用控制台应用程序 (dotnet6.0) 执行此操作的信息,但不适用于桌面窗口。
我有很多想要转换的 DotNet4.72 桌面应用程序,但它们仍然需要能够通过动态编辑文件(如果条件发生变化)来简单地更改配置设置。虽然我可以推出自己的解决方案,但我希望像在我的 Web 应用程序 (appsettings.json) 中那样执行此操作。更好的是,我希望看到一个 VS2022 桌面模板,每次为 DotNet6 和 7 创建新的桌面应用程序时都会执行此操作。
有任何想法吗?
我需要知道应用程序设置(连接字符串)的存储位置和方式,以便在运行时更改它们并保存.
我知道在VS中你可以配置项目>属性下的设置,这些设置存储在apps安装目录下的appname.exe.config文件中.但是"应用程序范围"在运行时不能读/写,如果你改变那些在用户范围下,配置文件的副本在用户目录下创建,并且不会被应用程序的其他用户访问.
我需要有一种方法,以便用户可以根据应用程序内部的需要配置存储在公共配置文件中的连接字符串,然后让所有其他用户(在该计算机上)也可以使用它.我该怎么做到这一点?
我正在考虑向应用程序添加可配置设置,我认为最简单的方法是外部文件或win注册表(它是一个仅赢的应用程序).
哪种方式会更好?
我想知道,权限不足的用户可能无法创建/写入配置文件.在注册表的情况下,今天的杀毒软件允许我添加/编辑/删除密钥吗?或者他们只监视某些键?
此外,如果有人知道在vc ++中管理配置设置(在纯win32中)的类/ lib,请发布它.
我目前正在扩展一些利用查找表的现有代码.现在,该表大约有25个条目,无论好坏,键/值都存储在web.conf的appsettings部分.它们被读入字典并在整个应用程序中使用.
我将查找表的大小增加到大约300个条目,这是该域的完整值集 - 所以它不太可能变得更大,也不会经常更改.我不确定将这些数据保存在web.conf中是个好主意.数据库不是此实现的选项,因此我正在寻找另一种存储此数据的方法.我的一些想法是:
我倾向于在一个包含操作数据集的方法的类中填充静态字典.任何建议,评论或愤怒的呼喊将不胜感激.
在创建ASP.Net MVC应用程序时,我有一个问题让我感到震惊:假设您有一个应用程序要部署到多个客户.应用程序代码是相同的,但您希望每个客户都能拥有一个appSettings.config文件,这样您只需更改web.config中appSettings标记的configSource即可部署到不同的客户(稍微简化一下) ,但仍然).
然后您意识到appSettings.config中50%的内容对所有客户都是通用的,只有50%是依赖于客户的.您可能最终要做的是在所有appSettings文件中都有重复的条目,这是一个主要的缺陷,因为如果您想对应用程序进行应用程序范围的更改,则需要记住更新所有这些条目.
在这种情况下,我真的希望有一种分层系统,你可以在单独的文件中有一个"基本配置"和"客户配置".然后我希望ConfigurationManager首先检查客户配置中的值,如果没有在那里定义它,它将转到基本配置.
我没有找到一种直接的解决方法,使用ASP.Net MVC4中的开箱即用功能.它是退出的,还是我需要以某种方式绕过默认的ConfigurationManager类?我可以创建自己的类,并通过调用我自己的实现来替换对ConfigurationManager.AppSettings [key]的所有调用,但如果可以的话,我宁愿避免这样做.我希望能够使用内置ConfigurationManager负责的一些基本功能,如缓存等.
以前解决过类似问题的人?我一直认为这似乎是一种常见的情况..
我试图添加这个值,但它给了我错误
<add key="RssFeedURL" value="http://www.example.com/?cat=11&feed=rss2"/>
Run Code Online (Sandbox Code Playgroud) appsettings ×10
c# ×5
.net-6.0 ×2
web-config ×2
.net ×1
arrays ×1
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
blazor ×1
c++ ×1
object ×1
settings ×1
visual-c++ ×1
winforms ×1