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

已添加正确using指令但对象部分方法仍不可用问题咨询

问题根源

  • Blue Prism 旧版本(v6及更早、部分v7早期版本)默认基于 .NET Framework 4.x 运行,而你调用的ImportPkcs8PrivateKey、ImportRSAPrivateKey方法,以及ReadOnlySpan<T>结构体,都是 .NET Core 3.0 / .NET 5及更高版本 才新增的API,.NET Framework 4.x 原生不提供这些接口,所以会报方法不存在、类型找不到的错误。
  • 你本地控制台程序能正常运行,是因为你创建的控制台项目目标框架为.NET Core/.NET 5+,和Blue Prism的运行环境不兼容。

解决方案

方案1:适配.NET Framework运行环境(兼容性最好,适配所有Blue Prism版本)

替换新API为.NET Framework支持的实现方式,读取PKCS8私钥可以用BouncyCastle库实现,步骤如下:

  1. 给你的类库项目安装BouncyCastle NuGet包:Install-Package BouncyCastle
  2. 替换私钥导入逻辑为兼容代码,示例:
using System.Security.Cryptography;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Security;

// 输入PKCS8格式私钥字符串,返回RSA实例
public static RSA ImportPkcs8PrivateKeyForNetFx(string privateKeyStr)
{
    // 去掉私钥的头尾标记(-----BEGIN PRIVATE KEY-----等)
    var privateKeyBits = Convert.FromBase64String(privateKeyStr
        .Replace("-----BEGIN PRIVATE KEY-----", "")
        .Replace("-----END PRIVATE KEY-----", "")
        .Replace("\r", "")
        .Replace("\n", ""));

    // 用BouncyCastle解析PKCS8私钥
    var keyParameter = PrivateKeyFactory.CreateKey(privateKeyBits);
    var rsaParams = DotNetUtilities.ToRSAParameters((RsaPrivateCrtKeyParameters)keyParameter);
    
    // 导入到RSACryptoServiceProvider
    var rsa = new RSACryptoServiceProvider();
    rsa.ImportParameters(rsaParams);
    return rsa;
}
  1. 所有用到ReadOnlySpan<T>的地方替换为byte[]数组实现即可。

方案2:升级Blue Prism运行环境(适合新版本Blue Prism)

如果你的Blue Prism是v7.1及以上版本,支持切换为.NET 6运行环境,直接将你的类库项目目标框架改为.NET 6,重新编译后导入Blue Prism即可原生调用你原来的代码,不需要修改逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:24:04