UrlEncode через консольное приложение? - PullRequest
61 голосов
/ 18 августа 2008

Обычно я бы просто использовал:

HttpContext.Current.Server.UrlEncode("url");

Но так как это консольное приложение, HttpContext.Current всегда будет null.

Есть ли другой метод, который делает то же самое, что я мог бы использовать?

Ответы [ 12 ]

0 голосов
/ 15 февраля 2018

Uri.EscapeUriString не следует использовать для экранирования строки, которая будет передана в URL-адресе, поскольку она не кодирует все символы, как вы могли бы ожидать. «+» - хороший пример, который не избежал. Затем он преобразуется в пробел в URL, поскольку это то, что он означает в простом URI. Очевидно, что это вызывает огромные проблемы в ту минуту, когда вы пытаетесь передать что-то вроде строки в кодировке 64 в URL, и на принимающей стороне появляются пробелы по всей строке.

Вы можете использовать HttpUtility.UrlEncode и добавить необходимые ссылки в свой проект (и если вы общаетесь с веб-приложением, я не вижу причин, почему вы не должны этого делать).

В качестве альтернативы используйте Uri.EscapeDataString вместо Uri.EscapeUriString, как хорошо объяснено здесь: https://stackoverflow.com/a/34189188/7391

0 голосов
/ 02 августа 2016

Лучше всего добавить ссылку на System.web..dll

и использование var EncodedUrl = System.Web.HttpUtility.UrlEncode ("URL_TEXT");

Файл можно найти по адресу System.web.dll

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...