[英]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=pdf
或AllowedMimeTypes__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
附言
如果您使用的對象數組包含Key
和Value
的字符串,則使用AllowedMimeTypes:0:Key
和AllowedMimeTypes:0:Value
之類的東西會起作用。 例如
public class KVPair {
public string Key, Value;
}
public class AllowedMimeTypes : List<KVPair> {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.