Итак, давайте отбросим строку нонсенс в HttpServerUtility.UrlTokenDecode
и убедитесь, что она заканчивается на цифру 0-9:Почему HttpServerUtility.UrlTokenDecode генерирует исключение, если оно не находит символ заполнения?
HttpServerUtility.UrlTokenDecode("fu&+bar0");
и она взрывается с FormatException
.
Теперь давайте попробуем же без числа в конце:
HttpServerUtility.UrlTokenDecode("fu&+bar");
Исключение не происходит, и метод возвращает нуль.
Я понимаю, что символ в конце предназначен для представления количества отступов, которые будут возникать, когда строка закодирована в base64, и что по алгоритму это может быть только символ цифры между 0-9 , как мы можем видеть в этом декомпилированном коде:
int num = (int) input[length - 1] - 48;
if (num < 0 || num > 10)
{
return (byte[]) null;
}
так что мой вопрос: почему этот метод возвращение нуль, когда переданы определенный типа испорченных маркеров, но бросить исключение, когда другой тип коррупции встречаются? Есть ли обоснование этого решения, или это просто случай небрежной реализации?