传递一个 url 编码的字节数组

Passing a url encoded byte array

我需要通过 URL 传递一个字节数组。所以我使用 UrlEncode 方法对其进行编码,如下所示:

string ergebnis = HttpUtility.UrlEncode(array);

结果是以下字符串:%00%00%00%00%00%25%b8j

现在当我像这样 URL 传递这个字符串时 http://localhost:51980/api/Insects?Version=%00%00%00%00%00%25%b8j

这是我的 Get 函数:

        public List<TaxonDiagnosis> Get([FromUri] string version)
        {
            List<TaxonDiagnosis> result = new List<TaxonDiagnosis>();

            result = db.TaxonDiagnosis.ToList();

            byte[] array = HttpUtility.UrlDecodeToBytes(version);

            if (version != null)
                result = db.GetTaxonDiagnosis(array).ToList();

            return result;
        }

问题是,version 的值不是 %00%00%00%00%00%25%b8j。相反,它是 [=19=][=19=][=19=][=19=][=19=]%�j。当我再次尝试将其解码为 byte array 时,这当然会导致问题。

如何在 Url 中传递正确的字符串?

按照 Jon Skeet 的建议,我使用 URL-安全的 base64 解码器对数组进行了编码,如下所示 post:How to achieve Base64 URL safe encoding in C#?