小编Dek*_*kim的帖子

Hangfire - 多租户,ASP.NET Core - 解析正确的租户

我有一个需要使用 Hangfire 的 SaaS 项目。我们已经实施了识别租户的要求。

建筑学

  • 持久层
    • 每个租户都有自己的数据库
  • .NET 核心
    • 我们已经有一个服务TenantCurrentService可以从源列表中返回租户的 ID [主机名、查询字符串等]
    • 我们已经有一个DbContextFactoryfor Entity Framework,它为客户端返回一个带有正确连接字符串的数据库上下文
    • 我们目前正在使用 ASP.NET Core DI(如果有帮助,愿意改变)
  • 吊火
    • 使用单一存储(例如:Postgresql),无论租户数量如何
    • 在适当的 Container/ServiceCollection 中执行作业,以便我们检索正确的数据库、正确的设置等。

问题

我正在尝试将 TenantId 标记到作业,从TenantCurrentService(这是一个范围服务)检索。

当作业被执行时,我们需要TenantId从作业中检索并将其存储在 中HangfireContext,以便TenantCurrentService知道从 Hangfire 检索到的 TenantId。从那里,我们的应用程序层将能够从我们的数据库连接到正确的数据库DbContextFactory

当前状态

  • 目前,我们已经能够使用IClientFilter.
  • 如何从 IServerFilter(负责检索保存的作业参数)检索我当前的 ASP.NET Core DI ServiceScope,以便我可以调用 .GetRequiredService().IdentifyTenant(tenantId)

有没有关于这个问题的好文章/或者你们可以提供的任何提示?

c# dependency-injection hangfire .net-core asp.net-core

10
推荐指数
1
解决办法
2499
查看次数

使用 docker-compose 的本地 Vault

我在 docker-compose 中运行 Vault 时遇到了很大的麻烦。

我的要求是:

  • 作为守护进程运行(因此当我重新启动 Mac 时也会重新启动)
  • 秘密在容器重新启动之间保留
  • 重启之间无需人为干预(开封等)
  • 使用通用令牌

我当前的 docker-compose

version: '2.3'
services:
  vault-dev:
    image: vault:1.2.1
    restart: always
    container_name: vault-dev
    environment:
      VAULT_DEV_ROOT_TOKEN_ID: "myroot"
      VAULT_LOCAL_CONFIG: '{"backend": {"file": {"path": "/vault/file"}}, "default_lease_ttl": "168h", "max_lease_ttl": "720h"}'
    ports:
      - "8200:8200"
    volumes:
      - ./storagedc/vault/file:/vault/file
Run Code Online (Sandbox Code Playgroud)

但是,当容器重新启动时,我得到日志

==> Vault server configuration:

             Api Address: http://0.0.0.0:8200
                     Cgo: disabled
         Cluster Address: https://0.0.0.0:8201
              Listener 1: tcp (addr: "0.0.0.0:8200", cluster address: "0.0.0.0:8201", max_request_duration: "1m30s", max_request_size: "33554432", tls: "disabled")
               Log Level: info
                   Mlock: supported: true, enabled: false
                 Storage: file
                 Version: …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose hashicorp-vault

7
推荐指数
1
解决办法
8613
查看次数

在OSX上实时重新加载和asp.net vNext

你如何在MacOSX上获得命令"k kestrel"来实现重载(asp.net vNext的优势之一)?

在"k -h"之后,看起来命令是"k - watch kestrel",但是,当我对我的示例HelloMvc控制器进行更改时,它不会重新加载.

macos mono asp.net-core

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

读取文件,并监视换行

我希望创建一个控制台应用程序,该应用程序将读取文件并监视每行的新行,因为每隔0.5秒它就会被另一个进程写入。

在使用.NET 4.5的控制台应用程序中如何实现?

.net c# console-application filestream

3
推荐指数
1
解决办法
2554
查看次数