Могу ли я получить с помощью HttpModule URL, содержащий * раньше? - PullRequest
0 голосов
/ 10 ноября 2009

Мой веб-сайт работает в ASP.NET 3.5, IIS7, режим интегрированного пипилина. Мой HttpModule получает запрос ко всем ресурсам, включая такие URL: http://my -site.com / адрес

И я бы поддержал символ '*' в URL для пользователей. Все попытки перейти по такому адресу блокируются ASP.NET со следующим сообщением об ошибке:

Ошибка HTTP 400.0 - неверный запрос ASP.NET в URL обнаружены недопустимые символы.

В этом случае выполнение не достигает обработчика BeginRequest.

Есть ли возможность получить возможность обрабатывать URL-адреса с символом '*' (и другие зарезервированные тоже, если это возможно).

Спасибо

1 Ответ

0 голосов
/ 10 ноября 2009

Что означает наличие * в URL, вы можете отключить некоторые настройки фильтрации URL, чтобы разрешить это, но это повлияет на безопасность вашего сайта. Посмотрите на следующее, если вам действительно нужно это сделать:

http://dirk.net/2008/06/09/ampersand-the-request-url-in-iis7/ http://support.microsoft.com/kb/820129 http://www.lostechies.com/blogs/joshuaflanagan/archive/2009/04/27/asp-net-400-bad-request-with-restricted-characters.aspx

Модуль HttpModule, который правильно закодирован и зарегистрирован в web.config, автоматически получит любой запрос, который ASP.Net начинает обрабатывать, если ASP.Net отклоняет запрос до начала обработки, метод BeginRequest никогда не будет вызван. *

В зависимости от того, что вы пытаетесь сделать, может быть лучше создать HttpHandler и зарегистрировать его с путем подстановочного знака.

...