IIS的个人Web请求是否保持在单个线程上?我想编写一个日志记录http模块,在请求执行时在线程本地存储中存储单个请求的日志事件列表。在End_Request上,我想将所有事件写回持久存储。问题是,一个请求是否匹配一个线程?即在我的代码中的任何地方我都可以假设我可以将项目添加到IEnumerable并且它们将在请求结束时正确地组合在一起。.ASP.NET无法在处理请求时切换线程。这称为线程敏捷性。只有某些点可以/将会做到这一点。我不记得他们脑子里想的是什么——现在正在寻找参考……但简短的回答是否定的:你不能依赖同一个线程本地存储在整个请求期间都可以访问。您最好使用Context.Items而不是线程存储-这是每个请求。您不必担心服务器正在用它的线程做什么。会话在请求期间持续存在。为什么不使用它?我会考虑使用ELMAH和/或log4net来获得你需要的东西,因为它简单易用,而且现在使用NuGet包管理器更简单。http://code.google.com/p/elmah/http://logging.apache.org/log4net/有时候使用已经测试和配置好的代码来做你需要的环境而不是自己写环境是很棒的,但是,嘿,那是你的电话。如果您准备好丢失已经积累的日志数据,您可以等到请求结束后再写入日志,而不管线程安全性如何。如果记录每个事件对您很重要,那么我建议您在事件发生时将其写入日志。以上是C#学习教程:IIS的单个web请求是否保持在单线程?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
