我有以下用于连接和上传到AWS S3存储桶的代码:
class Program
{
public static AmazonS3EncryptionClient encryptionClient;
public static void Main(string[] args)
{
Upload();
}
static void Upload()
{
var algorithm = new System.Security.Cryptography.ECDsaCng();
encryptionClient = new AmazonS3EncryptionClient(new EncryptionMaterials(algorithm));
PutObjectRequest request = new PutObjectRequest();
request.BucketName = "...";
request.Key = "...";
request.InputStream = new MemoryStream(Encoding.Default.GetBytes("..."));
encryptionClient.PutObject(request);
}
我在
处获得了一个空引用异常encryptionClient.PutObject(request);
行,但我无法找到原因,因为我的所有对象都不为空。
我正在使用Visual Studio以及最新版本的AWSSDK.S3和AWSSDK.Core包。
答案 0 :(得分:1)
NPE与ECDsaCng
算法的使用有关。替换行
var algorithm = new System.Security.Cryptography.ECDsaCng();
与
var algorithm = System.Security.Cryptography.RSA.Create();
允许代码按预期执行。我不能说为什么会出现这种行为。堆栈跟踪源自AWS SDK中的EncryptEnvelopeKey
。