Это странная (для меня в любом случае) проблема с строкой запроса.asp.net mvc querystring parsing заменяет + пробелом
Я использую установочный инструмент, который имеет проверку серийного номера в Интернете. В основном, установка передает электронную почту пользователя и серийный номер на веб-страницу (или метод контроллера для MVC), и она принимает аргументы строки запроса и делает магию для проверки установки.
Одним из аргументов является адрес электронной почты, переданный в строке запроса.
У меня недавно появился пользователь, который использовал адреса электронной почты «+» для покупки подписки. Все работало хорошо, пока он не пошел на установку продукта и должен был пройти экран проверки.
После выполнения некоторого копания я обнаружил, что вместо того, чтобы получать '[email protected]'
Код проверки принимает 'джо [email protected]'
Of Конечно, пространство разрушает попытку проверки, так как его адрес электронной почты теперь ошибочен.
Я говорил с компанией-инсталлятором (Advanced Installer, лучший инструмент установки на планете), и они заявляют (и я считаю), что письмо отправлено правильно.
Так вот, что оставляет меня в том, как я могу получить парсер sser.net mvc querystring в правильном направлении для этого конкретного аргумента и передать строку с «+» методу contoller?
Это asp.net mvc 5, если это имеет значение.
Спасибо за любую помощь, которую вы можете сэкономить.
UPDATE
Проблема с представляемым, а не прием. знак плюса заканчивается незакодированным, поэтому он преобразуется в пробел = когда он обрабатывается парсером строки запроса.
Так что я ищу способ настроить синтаксический анализатор строки запроса для этого конкретного URL-адреса (и только этого URL-адреса).
Ярлык для исправления заключается в замене пробелов знаком плюса в email arg. Простой, но я ненавижу такой хакерство в моем коде, я предпочитаю, чтобы он использовал настраиваемый синтаксический анализатор, если мне это нужно, где я могу просто подключить его каким-либо образом.
Вы можете настроить примерно все остальное в asp.net mvc, поэтому мне было интересно, есть ли способ сделать строку запроса pasring некорректным способом.
Вы пробовали кодировать параметры строки запроса перед их отправкой? – Diego
Дублировано http://stackoverflow.com/questions/13445121/asp-net-query-string-encoding-and-decoding? – Diego
Если это инструмент, который передает символ + unencoded, то это инструмент, который неисправен. Контроллер делает правильную вещь. –