无法将超过4096个字节写入自定义IIS日志字段

时间:2018-10-22 12:05:15

标签: iis cookies iis-10 iis-logs

根据this documentation,您可以将Windows Server 2016上的IIS 10配置为写入自定义字段,只要“ 自定义字段中添加的数据总量不能超过65,536字节

我已经配置了一个自定义字段,以将Header中的cookie和另一个server变量中的cookie写入日志,这很好用。

enter image description here

但是无论我将maxCustomFieldLength设置为什么值,都只会将4096字节写入日志。

当我在Cookie中发送8k数据时,我:

  1. 将maxCustomFieldLength设置为4096,我在日志文件中仅获得2048个字节。
  2. 将maxCustomFieldLength增加到65536,我在日志文件中只得到4096个字节。

我已经使用fiddler验证了浏览器请求正在发送完整的8k cookie值,并且在客户端未将其截断为4096。

有什么主意,为什么IIS会将cookie值截断为4096,而不是将maxCustomFieldLength大于4096?

1 个答案:

答案 0 :(得分:0)

现在已经对此进行了广泛的研究,我发现将所有cookie设为<4k时将所有cookie记录到标准IIS日志文件中的唯一方法是编写一个自定义HttpModule:

  1. 加入Begin_Request
  2. 从请求标题中读取原始cookie字符串
  3. 将其拆分为<4k的块(将整个cookie保留为整个项目,名称和值)
  4. 将这些块写入自定义请求标头
  5. 使用一堆新的自定义字段配置IIS,以将新的请求标头放到iis日志中