我使用 Blob 存储索引器在 Azure 搜索中索引我的文件。
执行搜索后,我应该能够通过解码 Base64 元数据字符串来确定 blob 的路径。据我所知,C# 无法解码返回的 base64。
以下是从 Azure 搜索发送的示例 base64 路径:
1. aHR0cHM6Ly9qbG9jYWxnZW5lcmFsLmJsb2IuY29yZS53aW5kb3dzLm5ldC9kaWFyaW9zLzEvMTAtdGV4dG8uemlw0 -> 当我尝试在 C# 中对其进行解码时,出现以下异常:“Base-64 字符数组或字符串的长度无效”。使用的代码如下
2.
aHR0chHM6Ly9qbG9jYWxnZW5lcmFsLmJsb2IuY29yZS53aW5kb3dzLm5ldC9kaWFyaW9zLzEvMi10ZXh0by56aXA1 -> 在末尾添加 5,该值不在原始路径中
3. aHR0chHM6Ly9qbG9jYWxnZW5lcmFsLmJsb2IuY29yZS53aW5kb3dzLm5ldC9kaWFyaW9zLzEvMy10ZXh0by56aXA1 -> 在末尾添加 5,该值不在原始路径中
这是我用来解码它的代码:
public static string DecodeBase64(this string base64)
{
// I have also tried with ASCII
return System.Text.Encoding.UTF8.GetString(System.Convert.FromBase64String(base64));
}
请参阅文档。具体来说,您需要使用 UrlTokenDecode 方法 或等效方法。
私有字符串DecodeBase64String(字符串编码字符串) { varcodedStringWithoutTrailingCharacter =encodedString.Substring(0,encodedString.Length - 1); var编码字节 = WebEncoders.Base64UrlDecode(encodedStringWithoutTrailingCharacter); 返回 HttpUtility.UrlDecode(encodedBytes, Encoding.UTF8); }