Msgstr "В клиенте обнаружено потенциально опасное значение Request.Path (%)." но запрос вроде бы нормально

ASP.Net MVC 3.0, .NET 4.0, IIS 7

Я знаю, что об этом спрашивали много раз, но я все еще не могу понять, что с ним не так.

Я получаю эти сообщения только изредка (менее 1 раза в день) и получаю около 4 тысяч посещений в день.

Вот ссылка на отчет об ошибке:
http://wowreforge.com/elmah.axd/detail?id=6CBE6DCA-88C2-45E7-AF53-A53061B8E25D

(обратите внимание, что есть ссылки на подробные отчеты XML и JSON)

Первое, на что нужно обратить внимание, это то, что URL (PATH) содержит кодированный в UTF-8 символ: /US/Warsong/Spartan%C3%B6
Во-вторых, запрос ГОЛОВ, а не ПОЛУЧИТЬ
Думаю, ни одна из этих деталей не должна привести к полученной мной ошибке.

Исходный URL был:
http://wowreforge.com/US/Warsong/Spartan%C3%B6?reforge=--52145254126214646464--3214325254&crit=7&dodge=90&exp=19&haste=1&hit=10&mastery=100&parry=67&spi=0

Я пробовал этот URL с запросами GET и HEAD, но не смог воспроизвести ошибку.

Что-нибудь еще, на что я могу ткнуть?

1 ответ

Заметить, что PATH_TRANSLATED = E:\web\wowreforgec\htdocs\EU\Kael%27Thas\Acekhor, Похоже, кодированный символ URL %27 не переводится на ' прежде чем искать путь к файлу на диске. % символ запрещен конфигурацией по умолчанию свойства RequestPathInvalidCharacters, поэтому ввод считается опасным и генерируется исключение.

редактировать

Метод HttpUtility.UrlDecode(string s) должен преобразовать /EU/Kael%27Thas/Acekhor в /EU/Kael'Thas/Acekhor, Этот метод (или одну из похожих функций) следует вызывать в точке, где виртуальный путь разрешен к физическому пути. Используете ли вы пользовательский метод для преобразования виртуального пути в физический путь?

Другие вопросы по тегам