我有一个应用程序,具有多租户。我想在用户上下文下创建后台作业,但我找不到实现它的好方法。我将解释一下我的架构。我正在使用包含 UserID 的接口 ICurrentUser。在 Startup 类中,我将实现 ICurrentUser 的类 WebUser 注册为 IoC 中的作用域,此类获取 HttpContext 并从声明中提取用户详细信息。
我正在执行后台作业,并且 ICurrentUser.UserID 为空,因为 hangfire 没有任何 httpcontext。
我通过使用接受 ICurrentUser 作为第一个参数的方法创建我的后台任务来解决这个问题,然后在方法体中,我为 UnitOfWork(和 AppServices)设置我的“CurrentUser”并开始执行任务,我有这种方法的问题在每个后台任务中重复此代码并将 CurrentUser 传递给它。
我的问题是如何实现下一步。或者,也许您可以为它提出其他解决方案。
例如,它可能看起来像这样:
BackgroundJob.Enqueue<MySvc>(UserContext, mysvc=>mysvc.Run());
Run Code Online (Sandbox Code Playgroud)
我阅读了源代码,但确实没有找到任何扩展点来实现这一点。
任何帮助是极大的赞赏。
有谁可以帮助我从 Azure 容器实例上运行的 docker 容器获取用户客户端 IP?
我的代码只获取某个东西的本地IP,我猜它是反向代理。所以ip是10.240.255.106;是标头我也有主机IP(公共容器IP),但仅此而已。标头
{“Cache-Control”:[“max-age = 0”],“连接”:[“保持活动”],“接受”:[“text / html,application / xhtml + xml,application / xml; q =0.9,image/webp,image/apng, / ;q=0.8"],"接受编码":["gzip, deflate"],"接受语言":["en-US,en;q=0.9 ,ru-RU;q=0.8,ru;q=0.7"],"主机":["23.99.249.54"],"用户代理":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit /537.36(KHTML,如 Gecko)Chrome/69.0.3497.100 Safari/537.36"],"Upgrade-Insecure-Requests":["1"],"DNT":["1"]}
有没有办法获取真实的客户端IP?