You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hyperledger Aries DotNet Mediator配置PostgreSQL数据库问题求助(NuGet 1.5.5版本)

问题解答:替换Hyperledger Aries Mediator的SQLite为Postgres存储

背景

你正在使用NuGet版本1.5.5的Hyperledger.Aries.Routing.Mediator,尝试将默认SQLite钱包存储替换为Hyperledger Indy-Postgres Plugin,已经配置了options.WalletConfiguration.StorageType = "postgres_storage"及相关参数,但启动时触发异常:

Unhandled exception. Hyperledger.Indy.WalletApi.UnknownWalletTypeException: The wallet type specified has not been registered.

下面针对你的三个问题逐一解答:

1. 是否需要在其他位置执行额外的初始化操作?

是的,必须先注册Postgres存储插件,才能让Indy SDK识别到postgres_storage类型。Indy SDK默认只内置了SQLite存储支持,第三方存储插件需要手动注册后才能被识别。

在.NET环境中,你需要在钱包初始化前的启动逻辑(比如Program.cs的Mediator初始化代码段)添加注册代码:

using Hyperledger.Indy.Utils;

// 根据运行环境替换插件文件名:Linux用libindystrgpostgres.so,Windows用indystrgpostgres.dll,macOS用libindystrgpostgres.dylib
await IndyUtils.RegisterWalletPluginAsync("postgres_storage", "libindystrgpostgres.so");

这一步是解决UnknownWalletTypeException的核心操作,必须放在钱包创建或初始化的代码之前执行。

2. 如何安装Hyperledger Indy-Postgres Plugin插件?

安装方式分环境不同有两种常用方案:

方案一:Linux系统通过包管理器安装

如果是Debian/Ubuntu系Linux,可以通过Indy官方源直接安装:

# 添加Indy SDK软件源
echo "deb https://repo.sovrin.org/sdk/deb bionic stable" | sudo tee /etc/apt/sources.list.d/indy-sdk.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 68DB5E88

# 更新源并安装Postgres存储插件
sudo apt-get update
sudo apt-get install -y libindy-postgres-storage

安装完成后,插件文件会自动放在系统默认库路径,注册时直接用libindystrgpostgres.so即可。

方案二:Windows/macOS手动安装

对于Windows或macOS,可以直接下载预编译插件或自行编译:

  • 从Indy SDK的官方发布页面下载对应平台的插件压缩包
  • 解压后将插件文件(indystrgpostgres.dll/libindystrgpostgres.dylib)放在应用程序可访问的路径(比如和exe同目录,或系统库目录)
  • 确保应用程序拥有该文件的读取权限

3. 除了indy-sdk官方文档之外,是否存在其他相关的配置文档?

除了官方文档,还可以参考这些实用资源:

  • Aries Framework .NET示例代码:在项目的GitHub仓库里,有部分自定义存储的示例,包含Postgres存储的配置细节
  • 社区讨论记录:Hyperledger Aries的Discord社区、GitHub Discussions里,很多开发者分享过实际配置Postgres的踩坑经验和解决方案
  • Mediator项目Issue:查看Hyperledger.Aries.Routing.Mediator的GitHub Issue,能找到其他用户遇到的同类问题及解决办法

最后补充一个完整的Postgres存储配置示例,供你参考:

options.WalletConfiguration = new WalletConfiguration
{
    Id = "mediator-wallet",
    StorageType = "postgres_storage"
};

options.WalletCredentials = new WalletCredentials
{
    StorageCredentials = new Dictionary<string, string>
    {
        {"url", "postgresql://your_username:your_password@localhost:5432/indy_mediator_wallet"},
        {"max_pool_size", "10"} // 可选,设置数据库连接池大小
    }
};

注意替换配置中的用户名、密码、数据库地址和库名,且要确保Postgres中已经提前创建好对应的数据库。


内容的提问来源于stack exchange,提问作者tkdp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 07:57:43