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

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

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

введите здесь описание изображения

Но в лог пишется только 4096 байт независимо от того, какое значение я поставил в maxCustomFieldLength.

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

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

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

Любые идеи, почему IIS усекает значение файлов cookie до 4096 и не учитывает значение maxCustomFieldLength больше 4096?


person chrisp_68    schedule 22.10.2018    source источник


Ответы (1)


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

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