“Больше, чем” и “Меньший, чем” символы в URL, не работающем

я, у меня есть следующий URL, который успешно обрабатывается приложением Tomcat Apache:

http://localhost:8080/ApplicationX/FileY/UpdateDocument(`ContentZ`).xml?VIEW=RAW

По некоторым причинам, когда я пытаюсь обработать тот же запрос в IIS с обработчиком Запросов HTTP ASP.NET (Реализация класса IHttpHandler), я получаю 'Плохой запрос' исключение, и мой код никогда не называют. Я применил этот патч в реестре (http://support.microsoft.com/kb/826437) для разрешения ':' символ, но это не помогло относительно большего и меньшего, чем символы.

Какие-либо способы сделать эту работу? Какие-либо причины с ним позволяются в Apache, но не в IIS?

Удачи.

P.S. Я использую IIS 5.1 на рабочей станции Windows XP с.NET 3,5 SP1.

5
задан jeanml 14 June 2010 в 17:21
поделиться

3 ответа

Попробовать использовать символьные сущности для экранирования этих символов?:

http://localhost:8080/ApplicationX/FileY/UpdateDocument(`<add location="somewhere">ContentZ</add>`).xml?VIEW=RAW
5
ответ дан 18 December 2019 в 16:36
поделиться

Если вы хотите избежать подобных проблем, вам необходимо кодировать URL-адрес.

    String UrlEncode(String value)
    {
        StringBuilder result = new StringBuilder();

        foreach (char symbol in value)
        {
            if ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~".IndexOf(symbol) != -1) result.Append(symbol);
            else result.Append("%u" + String.Format("{0:X4}", (int)symbol));
        }

        return result.ToString();
    }

Вышеупомянутое поддерживает юникод и почти все.

4
ответ дан 18 December 2019 в 16:36
поделиться

Вы должны заменить знаки < и > на < и > , поскольку эти символы специальные символы. Поэтому см. Urlencode функции PHP ( urlencode ).

-2
ответ дан 18 December 2019 в 16:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: