Я получаю довольно очевидную ошибку:
В клиенте обнаружено потенциально опасное значение Request.Path (*).
Проблема связана с *
URL-адресом запроса:
https://stackoverflow.com/Search/test*/0/1/10/1
Этот URL-адрес используется для заполнения страницы поиска, где «test *» является поисковым термином, а остальная часть URL-адреса относится к различным другим фильтрам.
Есть ли простой способ включить эти специальные символы в URL? Я пытался изменить web.config
, но безрезультатно.
Должен ли я вручную кодировать / декодировать специальные символы? Или есть лучший способ сделать это, я бы хотел избежать использования строк запроса. - но это может быть вариант.
Само приложение является c# asp.net
приложением веб-форм, которое использует маршрутизацию для создания симпатичного URL выше.
ValidateRequest=false
вверху?Ответы:
Символ
*
не разрешен в пути URL, но нет проблем с его использованием в строке запроса:Это не проблема кодирования,
*
символ не имеет особого значения в URL, поэтому не имеет значения, кодируете ли вы его URL или нет. Вам нужно будет закодировать его, используя другую схему, а затем декодировать его.Например, используя произвольный символ в качестве escape-символа:
И расшифровка:
источник
PATH
строке, а не в строке запроса.aa
<=>a
иab
<=>*
в качестве более простой схемы кодирования?Если вы используете .NET 4.0, вы должны разрешить эти URL через web.config
Обратите внимание, я только что удалил звездочку (*), исходная строка по умолчанию:
Смотрите этот вопрос для более подробной информации.
источник
Для меня, я работаю на .net 4.5.2 с веб-API 2.0, у меня та же ошибка, я установил ее, просто добавив requestPathInvalidCharacters = "" в requestPathInvalidCharacters, вы должны установить недопустимые символы, иначе вы должны удалить символы, которые вызвать эту проблему.
** Обратите внимание, что это не очень хорошая практика, может быть пост с этим параметром, так как атрибут объекта лучше, или попытаться закодировать специальный символ. - После поиска лучших рекомендаций по созданию остальных API-интерфейсов я обнаружил, что при поиске, сортировке и разбивке на страницы мы должны обрабатывать параметр запроса следующим образом.
и это решает проблему, когда мы кодируем & и заменяем его на URL-адрес% 26 любым способом, на сервере мы получаем правильный параметр Digital & Mckinsey
эта ссылка может помочь в разработке лучших веб-интерфейсов API https://hackernoon.com/restful-api-designing-guidelines-the-best-practices-60e1d954e7c9
источник
Вы должны кодировать значение маршрута и затем (если требуется) декодировать значение перед поиском.
источник
Для меня при вводе URL пользователь случайно использовал / вместо? запустить параметры запроса
например:
который должен был быть:
источник
Это исключение произошло в моем заявлении и было довольно обманчивым.
Он был сгенерирован, когда я вызывал веб-метод страницы ASPX с помощью вызова метода ajax, передавая объект массива JSON. Подпись метода веб-страницы содержала массив строго типизированного объекта .NET, OrderDetails. Свойство Actual_Qty было определено как int, а свойство Actual_Qty объекта JSON содержало «4» (дополнительный пробел). После удаления лишнего пробела преобразование стало возможным, метод веб-страницы был успешно достигнут вызовом ajax.
источник
Попробуйте установить сервер веб-проекта как локальный IIS, если это IIS Express. Убедитесь в правильности URL проекта и создайте виртуальный каталог.
источник
При работе с Uniform Resource Locator (URL) существуют определенные синтаксические стандарты , в этой конкретной ситуации мы имеем дело с зарезервированными символами. .
Как до RFC 3986 , зарезервированные символы могут (или не могут) быть определены как разделители по общему синтаксису, по каждому синтаксису, специфичному для схемы, или по синтаксису, специфичному для реализации алгоритма разыменования URI; А звездочка (*) является зарезервированным символом.
Лучше всего использовать незарезервированные символы в URL-адресах, или вы можете попробовать закодировать их.
Продолжать копать :
источник
%25
вместо%
, поэтому IIS может вернуть эту ошибку для совершенно корректного URL-адреса.