Я работаю над быстрым генератором капчей для простого сайта, который я собираю, и я надеюсь передать зашифрованный ключ в URL страницы. Я мог бы, вероятно, сделать это как параметр строки запроса достаточно простым, но я надеюсь не слишком (просто потому, что ничто не убегает от строки запроса)...
Мой код шифрования создает байт [], который затем преобразуется с помощью Convert.ToBase64String (byte []) в строку. Однако эта строка по-прежнему не совсем понятна для URL, поскольку она может содержать такие вещи, как "/" и "=". Кто-нибудь знает о лучшей функции в .NET framework для преобразования массива байтов в дружественную строку?
Я знаю все о System.Web.HttpUtility.UrlEncode() и его эквивалентах, однако они работают только с параметрами строки запроса. Если я url кодирую '=' внутри пути, мой веб-сервер возвращает ошибку 400 Bad Request.
В любом случае, это не критическая проблема, но надеемся, что кто-то сможет дать мне приятное решение.
** EDIT: Чтобы быть абсолютно уверенным, что я делаю со строкой, я решил, что поставлю немного больше информации.
Байт [], который является результатом моего алгоритма шифрования, должен передаваться через какой-то алгоритм, чтобы превратить его в дружественную URL-строку. После этого он становится содержимым XElement, который затем используется как исходный документ для преобразования XSLT и используется как часть атрибута href для привязки. Я не верю, что преобразование xslt вызывает проблемы, поскольку то, что происходит на пути, похоже, является параметром строки закодированного запроса, но вызывает HTTP 400
Я также пробовал HttpUtility.UrlPathEncode() в строке base64, но это тоже не похоже на трюк (я все еще заканчиваю "/в моем url" ) **