Не могу записать более 4096 байтов в настраиваемое поле журнала IIS
Согласно этой документации вы можете настроить IIS 10 в Windows Server 2016 для записи настраиваемых полей, если "Общий объем данных, добавляемых в настраиваемые поля, не может превышать 65536 байт".
Я настроил настраиваемое поле для записи файлов cookie из заголовка и другого из серверной переменной в журналы, и это прекрасно работает.
Но только 4096 байт записываются в журнал независимо от того, какое значение я добавил в maxCustomFieldLength.
Когда я отправляю 8k данных в куки и я:
- установить maxCustomFieldLength на 4096 Я получаю только 2048 байт в файле журнала.
- увеличить maxCustomFieldLength до 65536, я получаю только 4096 байт в файле журнала.
С помощью fiddler я проверил, что запросы браузера отправляют полное значение 8k cookie и что они не усекают значение до 4096 на клиенте.
Есть идеи, почему IIS урезает значение куки до 4096 и не учитывает maxCustomFieldLength больше 4096?
1 ответ
Проведя обширные исследования этого вопроса, я нашел единственный способ записать все файлы cookie в стандартные файлы журнала IIS, когда они < 4k, - это написать собственный HttpModule, который:
- подключается к Begin_Request
- читает необработанную строку cookie из заголовков запроса
- разбивает его на куски < 4k (сохраняя целые файлы cookie в виде целых элементов, имени и значения)
- записать куски в заголовки пользовательских запросов
- настройте IIS с помощью набора новых настраиваемых полей для добавления новых заголовков запросов в журналы iis