Серверная переменная UNENCODED_URL содержит странное значение вместо закодированной косой черты

У нас есть устаревшая IIS DLL, которая использует GetServerVariable (MSDN) чтобы получить значение UNENCODED_URL, При доступе к URL:

https://example.com/a%2Fb

полученное значение будет выглядеть так:

/path/to/server.dll/a0.000000b

что странно, потому что это должно выглядеть так:

/path/to/server.dll/a%2Fb

LPEXTENSION_CONTROL_BLOCKценность lpszPathInfo (MSDN) имеет значение:

/a/b

как и ожидалось.

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

1

Решение

Если вы используете, например, printf вывести значение переменной среды вместо использования отладчика, или puts, это объяснит это. %2f будет пониматься как команда printf вывести первый переменный аргумент в виде числа с плавающей запятой.

Всегда выводить строки с puts или другие функции, которые не изменяют значение.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]