c# - 在 .NET Core 环境变量中表示字典 <string, string>

标签 c# asp.net-core

我的网络应用程序中有一个配置部分,用于表示为 JSON 字典的不同 MIME 类型,如下所示:

"AllowedMimeTypes": {
    "image/*": "",
    "application/pdf": "pdf",
    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "excel",
    "application/vnd.ms-excel": "excel",
    "application/msword": "word",
    "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "word"
}

这是它映射到的类:

using System.Collections.Generic;

namespace MyApp.Models.Config
{
    public class AllowedMimeTypes : Dictionary<string, string>
    {
    }
}

当我使用 secrets.json 在本地运行它时,它工作得很好,但是当我在 Azure 中托管它时,我必须将它表示为环境变量,而且我似乎找不到任何可用的东西。

我已经尝试过使用“AllowedMimeTypes:0:Value”和“AllowedMimeTypes:0:image/*”的“AllowedMimeTypes:0:Key”,它们都抛出异常,而“AllowedMimeTypes:0”则不抛出异常不要给我正确的配置值。

有人知道如何让它工作吗?

最佳答案

您可以将字典键/值对表示为环境变量,方法是将键作为环境变量名称的最后一部分,并将环境变量的值设置为字典中您想要的值,例如 AllowedMimeTypes:application/pdf=pdfAllowedMimeTypes__application/pdf=pdf

请注意,如果您使用的是 shell,则在创建这些环境变量(主要是 AllowedMimeTypes__image/*)时可能会遇到一些麻烦,但这应该是 shell 而非操作系统施加的限制.

为了完整性:

AllowedMimeTypes__image/*=
AllowedMimeTypes__application/pdf=pdf
AllowedMimeTypes__application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=excel
AllowedMimeTypes__application/vnd.ms-excel=excel
AllowedMimeTypes__application/msword=word
AllowedMimeTypes__application/vnd.openxmlformats-officedocument.wordprocessingml.document=word

附言

如果您使用的对象数组包含KeyValue 的字符串。例如

public class KVPair {
    public string Key, Value;
}

public class AllowedMimeTypes : List<KVPair> {
}

关于c# - 在 .NET Core 环境变量中表示字典 <string, string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56563415/

相关文章:

asp.net-core - IOptionsMonitor 与 IOptionsSnapshot 之间的区别

docker - 如何在aspnet Nanoserver docker容器中安装Powershell Core?

c# - Ninject WCF 自托管注入(inject)

c# - 如何更改组合框控件中的下拉按钮?

c# - 如何使用 iTextSharp 确定 PDF 文件类型

c# - VS 2017 .NET 4.6.2 新增 ASP.NET Core Web Application (.NET Framework) 默认为 x86 平台

asp.net-core - 在.NET Core 2.1.0-rc1-final中使用System.Net.Http.SocketsHttpHandler

c# - ASP.NET Core MVC 标记帮助器参数中的字符串文字

c# - 获取 SPFieldCurrency 字段的数值

c# - 从移动服务表获取数据