Как именно работает Url Encoding? - PullRequest
2 голосов
/ 08 декабря 2011

В MVC я пытаюсь использовать URL-маршрутизацию, чтобы получить результат действия с определенным вводом.

Примите во внимание следующее:

<%=Html.ActionLink("View", "Test", new with {.id = Url.Encode(dir\file}) %>

Мой контроллер использует HttpUtility.UrlDecode(id) для получения оригинала. Сам контроллер использует File() для получения файла в указанном каталоге \ file location. Однако появляется сообщение об ошибке, сообщающее, что

A potentially dangerous Request.Path value was detected from the client (%).

URL отображается как

http://home/dir%255cfile.txt

Я гуглил кодировку Url, а \ кодируется как %5c. Откуда прибывает% 25? Это кодировка для%, но это означает, что кодирование выполняется дважды. Почему так и должно быть?

1 Ответ

1 голос
/ 08 декабря 2011

Html.ActionLink заботится о кодировке URL для вас.Если вы не закодируете параметры там, нет необходимости снова их декодировать, и ваша проблема решена.

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