标签: appsettings

appSettings等效于applicationSettings的文件属性

在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)

甚至是维护不同应用程序集的不同方法,例如用于本地开发的集合,以及用于生产的集合

.net asp.net configuration appsettings application-settings

6
推荐指数
1
解决办法
813
查看次数

app.config:如何使一个名为appSettings的嵌套customSection成为ConfigurationManager.AppSettings

我想要的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

6
推荐指数
1
解决办法
9099
查看次数

ConfigurationManager.AppSettings将"\n"转换为"\\n"为什么?

我在web.config中有一个AppSetting .

<add key="key" value="\n|\r"/>
Run Code Online (Sandbox Code Playgroud)

当我读它的ConfigurationManager.AppSettings["key"]时候会给出"\\n | \\ r".为什么?

asp.net web-config appsettings

6
推荐指数
1
解决办法
2406
查看次数

为什么我不能使用Azure上的自定义configProtectionProvider加密web.config/appSettings(Windows Server 2012)?

我有一个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)

encryption web-config appsettings azure windows-server-2012

6
推荐指数
1
解决办法
2980
查看次数

(新格式)visual studio项目中的可选appsettings.local.json

我的应用程序使用appsettings.json进行某些设置.如果存在appsettings.local.json,则应该覆盖appsettings.json以包含它包含的任何设置.到目前为止,没问题.

但我使用git进行版本控制.显然,我不希望其他用户拉下我的本地设置.所以我git忽略appsettings.json.

此外,解决方案中有很多项目.它们共享相同的设置.所以在解决方案级别有一个appsettings.json,所有项目都将它作为链接包含在内.

还不错,除了一件事.为了可以使用,我必须将appsettings.local.json复制到输出目录.但它不应该在版本控制中.因此,如果有人克隆解决方案新鲜,他们将没有它.那应该没问题,但事实并非如此.VS. 说"这个文件应该链接,但它到底在哪里?" 构建错误.

我该怎么处理?

c# git appsettings local-files visual-studio-2017

6
推荐指数
4
解决办法
3547
查看次数

JetBrains Rider - 配置appsettings覆盖

我正在为我现有的.NET Core项目尝试JetBrains Rider.在项目中,我有几个appsettings.json覆盖:

  • appsettings.Development.json - 用于发展
  • appsettings.Test.json - 用于检测
  • appsettings.Staging.json - 用于临时环境
  • 等等

在Visual Studio中,覆盖工作完美,在调试模式下运行应用程序时,我总是得到我的开发覆盖.但是,在Rider中我得到的默认appsettings.json值不适合调试和开发.如何更改设置以从正确的覆盖中获取值?

c# appsettings .net-core rider

6
推荐指数
3
解决办法
3122
查看次数

ASP.NET Core中的Web.config转换等效于什么?

ASP.NET Core文档建议我们应该使用appsettings.json文件以及每个环境的文件,其中应包含覆盖的值。问题是所有这些文件都已发布,尽管只有appsettings.json和appsettings。[Environment] .json是相关的。另一个问题是要更改服务器上的配置值,必须检查两个文件:基本文件和特定于环境的文件。

所以我的问题是:在每个部署环境中拥有一个配置文件的最干净方法是什么?

publish configuration-files appsettings asp.net-core

6
推荐指数
1
解决办法
3986
查看次数

ASP.Net 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)

如何确保转换后的数组缩小到较少数量的元素,而不是每个元素单独更改?

c# asp.net appsettings .net-core asp.net-core

6
推荐指数
1
解决办法
1832
查看次数

如何访问 GitHub Actions 环境机密?

很简单的问题,我不确定我错过了什么。

\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 }}\n
Run 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 }}\n
Run Code Online (Sandbox Code Playgroud)\n

简单地说 - 如何访问环境中的 MESSAGE 值?我需要手动设置环境吗?谢谢。

\n

补充信息:

\n

我真正想做的是这样的:

\n
on: [push]\njobs:\n  build-and-deploy:\n    runs-on: ubuntu-latest\n    environment: contains(\'main\', $GITHUB_REF) ? production : development\n
Run Code Online (Sandbox Code Playgroud)\n

我知道最后一行不起作用,但似乎如果我设置环境,我可以看到秘密 - 我只想重用大量部署代码而不是复制/粘贴。

\n

github appsettings github-actions

6
推荐指数
0
解决办法
1181
查看次数

如何从 appsettings.json 获取日期时间?

我有 .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)

c# datetime appsettings .net-core

6
推荐指数
1
解决办法
6041
查看次数