gpt4 book ai didi

c# - 从外部库并发访问 HttpContext

转载 作者:行者123 更新时间:2023-11-30 23:26:45 25 4
gpt4 key购买 nike

我需要能够轻松获取我们在 MVC 项目之外的程序集中运行的大量查询的用户名。我只想为所有调用添加一个参数,但实际上有数百个。

我的同事建议我传递对 HttpContext 的静态引用(大概在 OnApplicationStarted 或类似的东西中)并从那里获取用户名。

HttpContext 总是有关于当前用户 session 的信息。我对此担心的是,如果我的对象(存在于单独的程序集中)不知道从哪个用户那里提取信息,虽然这可能适用于单个用户,但它会提取错误的用户名用户开始访问系统。

这是识别用户名的可行方法吗?

HttpContext如何知道哪个用户是当前用户?该机制是否在项目外被切断?

最佳答案

HttpContext 实例不是全局的 - 它是特定请求的上下文。因此,例如,如果您正在执行 Controller 操作并调用 HttpContext(即 Controller.HttpContext),那么您正在处理该请求的上下文。因此,毫无疑问上下文是针对哪个用户的 - 它是针对发起该请求的用户。

您不会想从 OnApplicationStarted 引用它。它要么不可用,要么将成为当前请求的上下文。

也就是说,如果您需要的是用户名,那么我不确定您为什么要传递整个 HttpContext。一个函数应该只接收它需要的参数。如果它需要用户名,您可以从 HttpContext.User.Identity.Name 中获取。这将使其他库更容易测试。如果另一个库被调用但不是从 Web 应用程序调用怎么办?然后将不会有 HttpContext 传递给它。

关于c# - 从外部库并发访问 HttpContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794094/

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