是否可以在 IIS 日志文件中仅记录 SessionID?我已经看到您可以记录包含 sessionID 的 cookies 信息,但是这可以记录所有 cookies,而令人担心的是 IIS 日志文件的大小将显著增加。
感谢致敬,
卡尔提克
答案1
默认情况下,SessionID 存储在 cookie 中,因此您需要记录所有 cookie 以获取 SessionID。您必须将网站配置为使用无 cookie 会话,这将强制在 URL 中传递 SessionId。您可以在以下网址了解有关如何配置的更多信息:https://technet.microsoft.com/en-us/library/cc725824(v=ws.10).aspx
答案2
根据@PatrickBarron 的建议,您需要通过 cookies 集合记录该值,因为 IIS 无法从日志记录模块直接访问会话 ID。
在 IIS 中导航到站点树节点,然后选择日志编辑器。单击“选择字段...”按钮,然后在窗口顶部的标准字段中选中“Cookies (cs(Cookie))”字段。
请注意,这会记录整个 cookie,而不仅仅是ASP.NET_SessionID
您要查找的值。还请注意,作为 ASP.NET 优化的一部分,并非每个会话都会有一个 SessionID。
如果您想更详细,我认为您需要做一些棘手的事情。您可以使用 UrlRewrite 提取 cookie 值并编写新的请求标头,例如X-SessionID
,然后在日志记录中添加自定义字段?这可能是最短路径;或类似的东西。
答案3
SessionID 是一个应用程序构造,这解释了为什么它不会由 IIS 本机记录。
您可以通过 Response.AppendToLog 方法尝试
答案4
我只是在尝试这个,并找到了很酷的解决方法。这将使您可以灵活地从响应页面中输入任何值。
步骤 1 在您的代码行中添加添加 response.addHeader 和所需变量 例如在 ASP 中:response.AddHeader "SERVER_SID",Session.SessionID
步骤 2 在 IIS 管理器中选择您的站点 -> 选择“日志”配置 -> 单击格式旁边的“选择字段...”(应选择“W3C”)-> 在自定义字段区域中单击“添加字段...”-> 在弹出模式中输入字段的名称,选择“源类型:”作为“响应标头”,并在“源:”字段中输入您在步骤 1 中输入的标头变量的准确名称。在我们的示例中,它是“SERVER_SID”。单击确定 -> 确定 -> 应用
现在您应该在日志文件中看到它(但仅限于实际发出请求的行,而不是图像、JS 文件或 CSS 文件)