在IIS中启用会话ID日志logging

是否有可能在IIS日志文件中只loggingSessionID? 我已经看到你可以loggingcookie信息,其中包含会话ID,但是这可以logging所有的cookie,并担心IIS日志文件的大小会大大增加。

感谢致敬,

KARTHIK

默认情况下,SessionID存储在一个cookie中,所以你需要logging所有的cookie来获取SessionID。 你将不得不去configuration你的网站使用无cookie的会话,这将强制SessionId传递到URL中。 您可以通过https://technet.microsoft.com/zh-CN/library/cc725824(v=ws.10).aspx了解更多关于如何configuration的信息

根据@ PatrickBarron的build议,您需要通过cookie集合logging值,因为IIS不能直接访问logging模块中的会话ID。

在IIS中导航到“站点”树节点,然后select“日志logging”编辑器。 单击“select字段…”button,并在窗口顶部的标准字段中选中“Cookie(cs(Cookie))”字段。

请注意,这将logging整个cookie,而不仅仅是您要查找的ASP.NET_SessionID值。 还要注意,不是每个会话都有一个SessionID作为ASP.NET中的优化的一部分。

如果你想更细化,我认为你需要做一些棘手的事情。 您可以使用UrlRewrite来提取cookie值并编写一个新的请求标头,例如X-SessionID ,然后将自定义字段添加到日志? 这可能是最短的path; 或类似的东西。

SessionID是一个应用程序结构,它解释了为什么它本身不会被IISlogging。

您可以通过Response.AppendToLog方法来尝试

我只是在玩这个,并发现很酷的工作。 这将使您可以灵活地从响应页面中input任何值。

第1步添加到您的代码行,添加所需的variablesresponse.addHeader例如在ASP:response.AddHeader“SERVER_SID”,Session.SessionID

步骤2在IISpipe理器中select您的站点 – >select“日志logging”configuration – >单击格式(“W3C”应select)旁边的“select字段…” – >在自定义字段区域点击“添加字段…” – >popup模式input字段的名称,select“Source Type:”作为“Response Header”,并在“Source:”字段中input在STEP 1中input的标题variables的EXACT名称。在我们的例子中,它是“SERVER_SID ”。 点击确定 – >确定 – >应用

现在你应该看到它在你的日志文件中(但是只有在实际请求的行上,而不是在图像,JS文件或CSS文件)