Я пытаюсь передать строку Base64 в веб-приложение С#.Net через QueryString. Когда строка прибывает, знак "+" (плюс) заменяется пробелом. Похоже, что это делает автоматический процесс URLDecode. У меня нет контроля над тем, что передается через QueryString. Есть ли способ справиться с этой серверной стороной?
Пример:
http://localhost:3399/Base64.aspx?VLTrap=VkxUcmFwIHNldCB0byAiRkRTQT8+PE0iIHBsdXMgb3IgbWludXMgNSBwZXJjZW50Lg==
Выдает:
VkxUcmFwIHNldCB0byAiRkRTQT8 PE0iIHBsdXMgb3IgbWludXMgNSBwZXJjZW50Lg==
Люди предложили URLEncoding для запроса:
System.Web.HttpUtility.UrlEncode(yourString)
Я не могу этого сделать, поскольку у меня нет контроля над вызывающей процедурой (которая отлично работает с другими языками).
Было также предположение о замене пробелов знаком плюса:
Request.QueryString["VLTrap"].Replace(" ", "+");
У меня было хотя бы это, но я беспокоился об этом, и я должен был упомянуть об этом, чтобы начать, это то, что я не знаю, какие другие символы могут быть искажены в дополнение к знаку плюса.
Моя основная цель - перехватить QueryString до того, как она будет запущена через декодер.
С этой целью я попытался взглянуть на Request.QueryString.toString(), но это содержало ту же неверную информацию. Есть ли способ посмотреть необработанную QueryString до того, как она будет URLDecoded?
После дальнейшего тестирования выясняется, что .Net ожидает, что все, входящее в QuerString, будет закодировано в URL, но браузер не будет автоматически кодировать GET-запросы.