Входные данные не являются допустимой строкой Base-64
Точная причина, по которой вы получаете этот тип ошибки, заключается в том, что это недопустимая строка Base64 ,вместо этого, как уже упоминалось, это Guid
;и не является действительным Guid для этого .
Сначала вы можете проверить, есть ли у вас даже действительная строка Base64
, попытавшись преобразовать ее.
public static bool StringIsBase64(string myString)
{
Span<byte> buffer = new Span<byte>(new byte[myString.Length]);
return Convert.TryFromBase64String(myString, buffer , out int bytesParsed);
}
Теперьесли вы вызываете эту функцию, и она завершается успешно, мы предполагаем, что у вас есть действительная строка Base64
, в противном случае произойдет ошибка преобразования.
Ваш вызов теперь может выглядеть следующим образом:
string id = "59216167-f9c0-4b1b-b1db-1babd1209f10@ABC";
var bytes;
if (StringIsBase64(id))
{
bytes = Convert.FromBase64String(id);
}
Что-то еще, что я хотел бы сказать, что ни один из других ответов не адресован, это ввод , который недопустим даже для Guid . GUID - это 128-разрядное целое число (16 байт), и эта строка недопустима.
Вы действительно получите сообщение об ошибке:
Guidсодержит 32 цифры с 4 штрихами (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
Символы @ABC
в конце строки вызывают это, если они удалены, то у нас есть фактическийдействительный Guid
.