小编gri*_*nay的帖子

Hangfire 使用用户上下文运行后台作业

我有一个应用程序,具有多租户。我想在用户上下文下创建后台作业,但我找不到实现它的好方法。我将解释一下我的架构。我正在使用包含 UserID 的接口 ICurrentUser。在 Startup 类中,我将实现 ICurrentUser 的类 WebUser 注册为 IoC 中的作用域,此类获取 HttpContext 并从声明中提取用户详细信息。

我正在执行后台作业,并且 ICurrentUser.UserID 为空,因为 hangfire 没有任何 httpcontext。

我通过使用接受 ICurrentUser 作为第一个参数的方法创建我的后台任务来解决这个问题,然后在方法体中,我为 UnitOfWork(和 AppServices)设置我的“CurrentUser”并开始执行任务,我有这种方法的问题在每个后台任务中重复此代码并将 CurrentUser 传递给它。

我的问题是如何实现下一步。或者,也许您可​​以为它提出其他解决方案。

  1. 如何将我的 CurrentUser 传递给 JobActivator,以便在所有服务得到解决之前设置用户上下文。

例如,它可能看起来像这样:

BackgroundJob.Enqueue<MySvc>(UserContext, mysvc=>mysvc.Run());
Run Code Online (Sandbox Code Playgroud)

我阅读了源代码,但确实没有找到任何扩展点来实现这一点。

任何帮助是极大的赞赏。

hangfire

6
推荐指数
1
解决办法
1650
查看次数

在azure容器中的docker中获取客户端IP

有谁可以帮助我从 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?

azure azure-container-instances

5
推荐指数
1
解决办法
1171
查看次数