Не могу записать более 4096 байтов в настраиваемое поле журнала IIS

Согласно этой документации вы можете настроить IIS 10 в Windows Server 2016 для записи настраиваемых полей, если "Общий объем данных, добавляемых в настраиваемые поля, не может превышать 65536 байт".

Я настроил настраиваемое поле для записи файлов cookie из заголовка и другого из серверной переменной в журналы, и это прекрасно работает.

Но только 4096 байт записываются в журнал независимо от того, какое значение я добавил в maxCustomFieldLength.

Когда я отправляю 8k данных в куки и я:

  1. установить maxCustomFieldLength на 4096 Я получаю только 2048 байт в файле журнала.
  2. увеличить maxCustomFieldLength до 65536, я получаю только 4096 байт в файле журнала.

С помощью fiddler я проверил, что запросы браузера отправляют полное значение 8k cookie и что они не усекают значение до 4096 на клиенте.

Есть идеи, почему IIS урезает значение куки до 4096 и не учитывает maxCustomFieldLength больше 4096?

1 ответ

Решение

Проведя обширные исследования этого вопроса, я нашел единственный способ записать все файлы cookie в стандартные файлы журнала IIS, когда они < 4k, - это написать собственный HttpModule, который:

  1. подключается к Begin_Request
  2. читает необработанную строку cookie из заголовков запроса
  3. разбивает его на куски < 4k (сохраняя целые файлы cookie в виде целых элементов, имени и значения)
  4. записать куски в заголовки пользовательских запросов
  5. настройте IIS с помощью набора новых настраиваемых полей для добавления новых заголовков запросов в журналы iis
Другие вопросы по тегам