gpt4 book ai didi

c# - 获取唯一的线程 ID

转载 作者:行者123 更新时间:2023-11-30 14:16:27 29 4
gpt4 key购买 nike

我需要将实际的用户线程 ID 写入日志文件。如果我使用 Thread.CurrentThread.ManagedThreadId,我不会得到唯一的 ID,而是一遍又一遍地得到相同的 ID。

原因是跟踪整个系统用户的log.Info,以后如果我发现问题,我将能够在日志中搜索WHERE threadId = ? 并从日志中获取整个事件流。

我不介意将它放入 log4net 的代码中。

我说的是服务器线程而不是手动线程。

最佳答案

这是不可能的,因为您在 ASP.NET/IIS 中的线程正在 IIS 的线程池上运行...甚至不能保证 HTTP 请求完全在同一个线程上运行(例如,如果有一些我/O 操作它可以“进入休眠状态”并重新分配给池中的另一个线程)...

目标到底是什么?也许还有其他方法可以实现...

编辑 - 根据评论:

要跟踪请求,您可以尝试记录该请求的哈希码(可通过 GetHashCode() 访问)和/或记录 http 请求对象的某些属性/字段的值组合的哈希值。 .

如果你深入挖掘,你可以得到一个工作请求对象,它有一个(请求特定的)TraceID 属性...

如果您想跟踪完全取决于您的 session 管理的 session (无论是隐藏的 html 表单字段和/或 cookie 和/或用户和/或其他...)。

关于c# - 获取唯一的线程 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7545312/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com