ServerVariables ["UNENCODED_URL"] пусто, когда я пытаюсь получить к нему доступ в своем действии MVC - PullRequest
0 голосов
/ 14 октября 2011

Я пишу универсальный метод действия для страницы 404, который берет запрошенный URL, извлекает многословные биты с помощью регулярного выражения (\w+)* и отправляет эти биты через пробел в поисковую систему для генерации списка предлагаемых страниц.

Проблема в том, что ServerVariables["UNENCODED_URL"] кажется здесь недоступным в методе Action. Другие серверные переменные доступны , однако.

Я мог бы использовать ServerVariables["URL"] в сочетании с ServerVariables["QUERY_STRING"], оба из которых доступны. Но в некоторых ситуациях это не учитывает части URL-адреса, которые могут содержать действительную информацию о намерениях пользователя.

Например, если неправильно сформированный URL-адрес

/test/007/words/something-with-a-dot.xyz/these-words-are-neglected/?stuff-in-querystring

Тогда «URL» и «QUERY_STRING» находятся как "/test/007/words/something-with-a-dot.xyz" и "stuff-in-querystring"

.

«URL» довольно прямо игнорирует все после того, что выглядит как расширение файла. Так что этого недостаточно.

Так что случилось с UNENCODED_URL?
И как я могу получить его эквивалент?

1 Ответ

1 голос
/ 14 октября 2011

Вы пробовали переменную HTTP_URL?Похоже, он возвращает необработанный закодированный URL, например, "/vdir/default.asp?querystring" - из MSDN.

Источник

Также - если вынаходятся в методе действия контроллера, вы могли бы (должны?) использовать HttpContext вместо SERVER [someProperty].Примерно так:

var Url = HttpContext.Request.RawUrl;

, который возвращает полный URL текущего запроса.

...