Msgstr "В клиенте обнаружено потенциально опасное значение Request.Path (%)." но запрос вроде бы нормально - PullRequest
3 голосов
/ 15 июня 2011

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

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

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

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

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

Первое, на что нужно обратить внимание, это то, что URL (PATH) содержит символ в кодировке UTF-8: / US / Warsong / Spartan% C3% B6
во-вторых, запрос HEAD , а не GET
Мне кажется, что ни одна из этих деталей не должна привести к полученной мной ошибке.

Первоначальный 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 Ответ

0 голосов
/ 24 июня 2011

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

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

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

...