在asp.net web.config文件中,您可以执行此操作
<appSettings file="local.appSettings.config">
<add key="foo" value="bar" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
它将在local.appSettings.config中查找foo/bar设置的任何覆盖.
是否有applicationSettings的等价物?像这样的东西
<applicationSettings file="local.applicationSettings.config">
<FooBar.My.MySettings>
<setting name="foo" serializeAs="String">
<value>bar</value>
</setting>
</FooBar.My.MySettings>
</applicationSettings>
Run Code Online (Sandbox Code Playgroud)
甚至是维护不同应用程序集的不同方法,例如用于本地开发的集合,以及用于生产的集合
我想要的app.config是这样的:
<configSections>
<sectionGroup name="QA_Environment">
<section name="databases" type="System.Configuration.NameValueSectionHandler"/>
<section name="storageSystems" type="System.Configuration.NameValueSectionHandler"/>
</sectionGroup>
<sectionGroup name="Production_Environment">
<section name="databases" type="System.Configuration.NameValueSectionHandler"/>
<section name="storageSystems" type="System.Configuration.NameValueSectionHandler"/>
</sectionGroup>
</configSections>
Run Code Online (Sandbox Code Playgroud)
...然后我就得到了正确的组和部分.但是我会对任何有效或更好的建议感到满意.我现在已经降低了我的愿望:
<configSections>
<sectionGroup name="QA_Environment">
<section name="appSettings" type="System.Configuration.NameValueSectionHandler"/>
</sectionGroup>
<sectionGroup name="Production_Environment">
<section name="appSettings" type="System.Configuration.NameValueSectionHandler"/>
</sectionGroup>
</configSections>
Run Code Online (Sandbox Code Playgroud)
我想这很好......我想知道的主要问题是,如果我可以将这些部分中的一个替换为根级别的appSettings ...而不必迭代它们并以编程方式添加或创建配置并保存它.我只希望用户能够选择一个环境,select事件将改变appSettings ...
我面临的一个限制是我引用的数据层需要保持原样....所以我基本上需要让我的app.config可以像目前这些其他项目一样访问......那就是ConfigurationManager.AppSettings [afdasdf]
如果需要澄清,请告诉我...谢谢
c# configurationmanager app-config appsettings custom-sections
我在web.config中有一个AppSetting .
<add key="key" value="\n|\r"/>
Run Code Online (Sandbox Code Playgroud)
当我读它的ConfigurationManager.AppSettings["key"]时候会给出"\\n | \\ r".为什么?
我有一个MVC应用程序,它部署到运行在Windows Server 2012虚拟机上的Windows Azure托管服务.在web.config文件中,我有3个部分加密的使用PKCS12ProtectedConfigurationProvider:connectionStrings,dataCacheClients,和system.net/mailSettings/smtp.以下是相关部分的外观:
<configuration>
...
<configProtectedData>
<providers>
<add name="CustomProvider" thumbprint="[this is secret]"
type="Pkcs12ProtectedConfigurationProvider.Pkcs12ProtectedConfigurationProvider, PKCS12ProtectedConfigurationProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=34da007ac91f901d" />
</providers>
</configProtectedData>
...
<connectionStrings configProtectionProvider="CustomProvider">
<EncryptedData ... ommitted for brevity
</connectionStrings>
...
<system.net>
<mailSettings>
<smtp configProtectionProvider="CustomProvider">
<EncryptedData ommitted for brevity
</smtp>
</mailSettings>
</system.net>
...
<dataCacheClients configProtectionProvider="CustomProvider">
<EncryptedData ommitted for brevity
</dataCacheClients>
...
</configuration>
Run Code Online (Sandbox Code Playgroud)
所有上述工作都完美无缺.部署到Azure时,连接字符串,SMTP邮件和数据缓存都可以正常工作.该PKCS12ProtectedConfiguration供应商使用我的自定义证书解密的部分,一切都很好.
但是我似乎无法使用相同的方法进行加密web.config/appSettings.当我尝试将以下内容部署到Azure时...
<configuration>
...
<appSettings configProtectionProvider="CustomProvider">
<EncryptedData ommitted for brevity
</appSettings>
... …Run Code Online (Sandbox Code Playgroud) 我的应用程序使用appsettings.json进行某些设置.如果存在appsettings.local.json,则应该覆盖appsettings.json以包含它包含的任何设置.到目前为止,没问题.
但我使用git进行版本控制.显然,我不希望其他用户拉下我的本地设置.所以我git忽略appsettings.json.
此外,解决方案中有很多项目.它们共享相同的设置.所以在解决方案级别有一个appsettings.json,所有项目都将它作为链接包含在内.
还不错,除了一件事.为了可以使用,我必须将appsettings.local.json复制到输出目录.但它不应该在版本控制中.因此,如果有人克隆解决方案新鲜,他们将没有它.那应该没问题,但事实并非如此.VS. 说"这个文件应该链接,但它到底在哪里?" 构建错误.
我该怎么处理?
我正在为我现有的.NET Core项目尝试JetBrains Rider.在项目中,我有几个appsettings.json覆盖:
appsettings.Development.json - 用于发展appsettings.Test.json - 用于检测appsettings.Staging.json - 用于临时环境在Visual Studio中,覆盖工作完美,在调试模式下运行应用程序时,我总是得到我的开发覆盖.但是,在Rider中我得到的默认appsettings.json值不适合调试和开发.如何更改设置以从正确的覆盖中获取值?
ASP.NET Core文档建议我们应该使用appsettings.json文件以及每个环境的文件,其中应包含覆盖的值。问题是所有这些文件都已发布,尽管只有appsettings.json和appsettings。[Environment] .json是相关的。另一个问题是要更改服务器上的配置值,必须检查两个文件:基本文件和特定于环境的文件。
所以我的问题是:在每个部署环境中拥有一个配置文件的最干净方法是什么?
我有一个基本配置文件,例如.
appsettings.json
{
"Values": {
"Test": ["one", "two"]
}
}
Run Code Online (Sandbox Code Playgroud)
和
appsettings.dev.json
{
"Values": {
"Test": ["three"]
}
}
Run Code Online (Sandbox Code Playgroud)
在转换之后,数组将是
["three", "two"]
Run Code Online (Sandbox Code Playgroud)
如何确保转换后的数组缩小到较少数量的元素,而不是每个元素单独更改?
很简单的问题,我不确定我错过了什么。
\n我有一个环境秘密:
\n\n在这种情况下,“生产”环境可用于所有分支。\n我只是尝试在 appsettings 替换操作中访问 MESSAGE 变量(我尝试添加和删除存储库级别 MESSAGE 但无济于事):
\n- uses: actions/checkout@master\n- name: Variable\xe2\x80\xafSubstitution\n uses: microsoft/variable-substitution@v1\n with:\n files: DummyApi/appsettings.json\n env:\n Message: ${{ secrets.MESSAGE }}\nRun Code Online (Sandbox Code Playgroud)\n这将用 repo 级别设置替换它,但不是 env 级别设置,这根本不会替换它:
\n- uses: actions/checkout@master\n- name: Variable\xe2\x80\xafSubstitution\n uses: microsoft/variable-substitution@v1\n with:\n files: DummyApi/appsettings.json\n env:\n Message: ${{ env.MESSAGE }}\nRun Code Online (Sandbox Code Playgroud)\n简单地说 - 如何访问环境中的 MESSAGE 值?我需要手动设置环境吗?谢谢。
\n补充信息:
\n我真正想做的是这样的:
\non: [push]\njobs:\n build-and-deploy:\n runs-on: ubuntu-latest\n environment: contains(\'main\', $GITHUB_REF) ? production : development\nRun Code Online (Sandbox Code Playgroud)\n我知道最后一行不起作用,但似乎如果我设置环境,我可以看到秘密 - 我只想重用大量部署代码而不是复制/粘贴。
\n我有 .net core 5.0 应用程序并尝试从 appsettings.json 获取 DateTime
应用程序设置.json:
"TimeModel": {
"RestartDuration": "27.10.2021 12:30:00"
}
Run Code Online (Sandbox Code Playgroud)
代码:
services.Configure<TimeModel>(
configuration.GetSection("TimeModel"));
Run Code Online (Sandbox Code Playgroud)
错误:
System.InvalidOperationException: Failed to convert configuration value at 'TimeModel:RestartDuration' to type 'System.DateTime'.
---> System.FormatException: 27.10.2021 12:30:00 is not a valid value for DateTime.
---> System.FormatException: String '27.10.2021 12:30:00' was not recognized as a valid DateTime.
Run Code Online (Sandbox Code Playgroud) appsettings ×10
c# ×5
.net-core ×3
asp.net ×3
asp.net-core ×2
web-config ×2
.net ×1
app-config ×1
azure ×1
datetime ×1
encryption ×1
git ×1
github ×1
local-files ×1
publish ×1
rider ×1