Я пытаюсь закодировать зашифрованный идентификатор в Url. Например: http://www.calemadr.com/Membership/Welcome/9xCnCLIwzxzBuPEjqJFxC6XJdAZqQsIDqNrRUJoW6229IIeeL4eXl5n1cnYapg+N
Однако он либо неправильно кодирует, и я получаю косые черты "/" в шифровании, или я получаю и ошибки от IIS: Модуль фильтрации запросов настроен на отказ в запросе, который содержит двойную escape-последовательность.
Я пробовал разные кодировки, каждый из них терпит неудачу:
- HttpUtility.HtmlEncode
- HttpUtility.UrlEncode
- HttpUtility.UrlPathEncode
- HttpUtility.UrlEncodeUnicode
Обновление
Проблема была в том, что когда я зашифровал Guid и преобразовал его в строку base64, он будет содержать небезопасные URL-адреса. Конечно, когда я попытался перейти к URL-адресу, содержащему небезопасные символы, IIS (7.5/windows 7) взорвется. Url. Кодировка зашифрованной строки base64 будет повышаться и ошибка в IIS (модуль фильтрации запросов настроен на отказ от запроса, который содержит двойную escape-последовательность). Я не уверен, как он обнаруживает строки с двойной кодировкой, но это произошло.
После попытки вышеуказанных методов кодировать зашифрованную строку base64. Я решил удалить кодировку base64. Однако это оставляет зашифрованный текст байтом []. Я попробовал UrlEncoding byte [], это одна из перегрузок, зависающих от метода httpUtility.Encode. Опять же, хотя он был закодирован в URL, IIS не понравилось и подал "страницу не найдена".
После копания в сети я столкнулся с классом HexEncoding/Decoding. Применение Hex Encoding к зашифрованным байтам сделало трюк. Выходной сигнал является безопасным. С другой стороны, у меня не было никаких проблем с расшифровкой и расшифровкой шестнадцатеричных строк.