Эта проблема, кажется, является основной проблемой строки запроса.В вашем вопросе нет указателей относительно ожидаемого значения образца и фактического значения образца.Поэтому я не смогу дать вам точный ответ здесь.Но ниже двух находятся указатели, которые определенно решат эту проблему.
Возможны две проблемы:
Проблема 1: Оригинальная Base-64 не восстанавливается после HtmlDecode / UrlDecode
Эти токены кодируются в виде строк base 64, которые могут содержать такие символы, как '+'.
Они отправляются на сервер.
Затем сервер пытается выполнить операцию HtmlDecode над этой строкой, чтобы удалить символы, которые фактически присутствовали в оригинальном маркере base 64.
Например, '+' заменяется пустой строкой.
Итак, токен, сгенерированный после WebUtility.HtmlDecode, недействителен.Вот почему вы получаете недопустимую ошибку токена
How to check this ?
Вы можете отладить и посмотреть, каково значение после HtmlDecode и какое ожидаемое значение.Если они различаются, то это основная причина.
Проблема 2: неправильно сформирована строка запроса
Несколько пар значений ключа в строках запроса объединяются с помощью символа '&',Например, key1 = value1 & key2 = value2
Но иногда вместо &
в строку запроса входит его кодированная версия &
.
Например, key1 = value1 & key2 = value2
.Сетевой сервер не сможет правильно проанализировать строку запроса, если это так.
How to check this ?
Вы можете использовать непосредственное чтение необработанной строки запроса из HttpContext или HttpRequest, используя свойство QueryString, и проверьте, так ли это.Если это так, вы можете либо изменить свой клиент для отправки соответствующей строки запроса (более логичной и поддерживаемой), либо написать некоторый код, чтобы исправить это на стороне сервера.
Эти указатели должны помочь вам решить проблему.