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

问题描述 投票:0回答:2

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

我已经配置了一个自定义字段,将 Header 中的 cookie 和服务器变量中的另一个 cookie 写入日志中,效果很好。

但是无论我在 maxCustomFieldLength 中输入什么值,都只会将 4096 字节写入日志。

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

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

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

有什么想法为什么 IIS 将 cookie 值截断为 4096 并且不考虑大于 4096 的 maxCustomFieldLength 吗?

iis cookies iis-10 iis-logs
2个回答
0
投票

现在对此进行了广泛的研究,我发现将所有 cookie 记录到标准 IIS 日志文件中的唯一方法 < 4k is to write a custom HttpModule that:

  1. 挂钩Begin_Request
  2. 从请求标头中读取原始 cookies 字符串
  3. 将其分成块< 4k (preserving entire cookies as whole items, name and value)
  4. 将块写入自定义请求标头
  5. 使用一堆新的自定义字段配置 IIS,以将新的请求标头放入 iis 日志中

0
投票

你有没有测试过这种方法并且有效?我不确定您如何配置 IIS 来添加新的自定义字段?

© www.soinside.com 2019 - 2024. All rights reserved.