Символы «Больше чем» и «Меньше чем» в URL не работают - PullRequest
3 голосов
/ 14 июня 2010

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

http://localhost:8080/ApplicationX/FileY/UpdateDocument(`<add location="somewhere">ContentZ</add>`).xml?VIEW=RAW

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

Любые способы заставить эту работу работать«Любые причины с этим разрешены в Apache, но не в IIS?»

Cheers.

PS Я использую IIS 5.1 на рабочей станции Windows XP с .NET 3.5 SP1.

Ответы [ 5 ]

5 голосов
/ 14 июня 2010

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

http://localhost:8080/ApplicationX/FileY/UpdateDocument(`&lt;add location="somewhere"&gt;ContentZ&lt;/add&gt;`).xml?VIEW=RAW
4 голосов
/ 04 февраля 2016

Заменить > на %3E

и замените < на %3C

проверено и работает.

4 голосов
/ 14 июня 2010

Если вы хотите избежать подобных проблем, вам нужно URL-кодировать 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();
    }

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

0 голосов
/ 21 февраля 2011

Что делать, если приложение, отправляющее запрос, является устаревшим приложением, которое нельзя изменить.Есть ли способ обойти эту проблему и позволить IIS принять запрос как есть?

0 голосов
/ 14 июня 2010

Вы должны заменить знаки < и > на &lt; и &gt;, поскольку эти символы являются специальными символами. Поэтому см. PHP-функцию urlencode ( urlencode ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...