我试图找出在ASP.NET核心2.2web应用程序中的框架类之间共享某些请求特定数据的最干净和最安全的方法。
当我说框架类时,我指的是像中间件或授权处理程序这样的类,广义地说,框架类涉及到处理用户请求的过程。
我正在寻找的共享的想法是具有某种类型的隐式请求上下文或请求数据包,可以从HTTP请求处理涉及的所有框架类中访问。
过去,我在.NET核心控制台应用程序中使用AsyncLocal类做了类似的事情。
我发现的可能替代办法如下:
完成我想做的事情的最好方法是什么?在ASP.NET核心中还有其他方法可以做到这一点吗?
作为一个侧面,使用AsyncLocal类作为在整个ASP.NET核心请求处理流程中的类之间共享数据的方法安全吗?我没有找到任何关于AsyncLocal与ASP.NET核心的使用的微软指南。
谢谢你的帮助
发布于 2019-07-15 17:07:57
你实际上回答了自己(这是一个巨大的好处,因为你不仅问了一个正确的问题,而且研究了可能的解决方案)。
使用HttpContext项是最简单和最直接的方法。但是,当接收到值时,它会带来转换对象的痛苦,可能会序列化并记住存储它的键(否则您将使用魔法弦)。
另一方面,使用作用域服务是比较成熟和专注的方式。如果您知道在您的数据包中期望的是什么,那么您可以为它实现一个复杂的服务,包括属性和可能更窄的部分。那样的话,接收数据将是纯粹的乐趣。
我建议你分析一下实际需求,以及使用这种逻辑的频率。无论它将在许多地方使用,还是只使用一次,也许是两次。考虑到这一点,你应该完全有能力做出正确的决定。
可悲的是,我对在AsyncLocal<T>核心中使用ASP.NET一无所知。
https://stackoverflow.com/questions/57043918
复制相似问题