Почему IIS Express считает, что этот URL имеет двойную escape-последовательность? - PullRequest
0 голосов
/ 20 марта 2020

http://localhost: 8084 / views / mask17 / Part / MOTOR.SUB_MOTOR.112 / Cl.1% 20DIV.2% 20Gr.% 20C% 2BD

Последняя часть пути не закодированы

Cl.1 DIV.2 Gr. C+D

Справочная информация: внешний интерфейс SPA и. NET Базовый сервер WebAPI.

Один контроллер имеет это объявление

    [HttpGet]
    [Route("/views/maske17/Part/{NodeId}/{DataId}")]
    public virtual IActionResult InfoGet([FromRoute][Required] string NodeId, [FromRoute]string DataId)

Ошибка

Вызов вышеуказанного URL вызывает

HTTP Error 404.11 - Not Found
The request filtering module is configured to deny a request that contains a double escape sequence.

Если я удаляю кодировку для + между C и D, ошибка возникает не бывает


Вопросы

  1. Почему IIS Express считает, что этот URL имеет двойную escape-последовательность?
  2. Какая часть закодированного пути является «двойной escape-последовательностью»?

1 Ответ

1 голос
/ 20 марта 2020

В вашем случае + является виновником. Вы предоставляете %2B, который декодируется дважды, т. Е. Через символ + в пробел.

Посмотрите на этот вопрос и этот выпуск GitHub для более подробной информации.

...