Будет ли URL-кодирование заставлять IIS 7 принимать URL-адреса, изначально содержащие двойную escape-последовательность? - PullRequest
0 голосов
/ 16 февраля 2012

Я получаю «Модуль фильтрации запросов настроен на отклонение запроса, который содержит двойную escape-последовательность». при запросе изображений со знаком плюс в их именах файлов. Я бы не хотел отключать эту функцию. Вместо этого я надеюсь, что смогу правильно закодировать свои URL. Проблема в том, что я не хочу тестировать это (в разработке) и не уверен, как IIS 7 хочет, чтобы мой URL выглядел? Как вы думаете, это решит мою проблему?

        const string fileName = "test+test.jpg";

        string urlEncoded = HttpUtility.UrlEncode(fileName);
        Assert.That(urlEncoded, Is.EqualTo("test%2btest.jpg"));

1 Ответ

0 голосов
/ 16 февраля 2012

К сожалению, это не так. IIS7 расшифрует ваш URL, увидит, что вы кодировали знак плюс, а затем все равно выдаст ошибку двойной escape-последовательности. Если вы действительно хотите использовать знаки плюс, я думаю, вы должны разрешить двойное кодирование URL.

Здесь - это сообщение в блоге от разработчика из группы IIS, в котором подробно описываются некоторые причины, по которым они решили не допускать принятия знаков «+».

Другой вариант, и вы, возможно, подумали об этом, заключается в том, что вы можете придумать собственную последовательность перехода, чтобы заменить знаки плюс на то, что IIS не распознает. Затем вам нужно будет написать свой собственный код, чтобы проверить вашу escape-последовательность и переписать ее в '+'.

Если вы хотите получить более подробную информацию о том, как вся система проверки работает в IIS7 и ASP.Net, вы можете увидеть мой ответ на похожий вопрос здесь .

Надеюсь, это поможет.

...