簡體   English   中英

表示字典<string, string>在 .NET 核心環境變量</string,>

[英]Representing a dictionary<string, string> in .NET Core environment variables

我的 web 應用程序中有一個配置部分,用於表示為 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"
}

這是它映射到的 class:

using System.Collections.Generic;

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

當我使用 secrets.json 在本地運行它時,這非常有效,但是當我在 Azure 中托管它時,我必須將它表示為環境變量,我似乎找不到任何有效的東西。

我試過“AllowedMimeTypes:0:Key”和“AllowedMimeTypes:0:Value”和“AllowedMimeTypes:0:image/*”,它們都拋出異常,而“AllowedMimeTypes:0”沒有但沒有給我正確的配置值。

有誰知道如何讓這個工作?

它不會自動轉換為配置對象,但您可以將字典存儲為 JSON 格式的環境變量,例如

AllowedMimeTypes="[{'image/*': '', 'application/pdf': 'pdf', 'application/msword': 'word'}]"

並且您可以手動將其轉換為字典

var values = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);

您可以將您的字典鍵/值對表示為環境變量,方法是將鍵放置在 env var 名稱的最后一段,並將 env var 的值設置為字典中所需的值,例如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的字符串,則使用AllowedMimeTypes:0:KeyAllowedMimeTypes:0:Value之類的東西會起作用。 例如

public class KVPair {
    public string Key, Value;
}

public class AllowedMimeTypes : List<KVPair> {
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM