我正在尝试使用SSIS包-脚本任务- c#代码从Azure Blob Storage读取PGP加密文件到流,将文件数据解密为字符串并加载到Azure SQL MI服务器。但是我无法从Azure blob存储中解密文件。当我从Azure blob存储中读取PGP加密文件并下载到本地文件夹时,然后从本地文件夹中我可以解密文件并将解密数据存储到字符串中。
主程序下面- ScriptMain.cs
public void Main()
{
try
{
#region variables
string azureBlob = Dts.Variables["User::vAzureBlobContainer"].Value.ToString();
string azureStorageAccessKey = Dts.Variables["User::vAzureStorageAccessKey"].Value.ToString();
string azureStorageAccount = Dts.Variables["User::vAzureStorageAccount"].Value.ToString();
StorageCredentials credentials = new StorageCredentials(azureStorageAccount, azureStorageAccessKey);
checkPoints = "1. Storage Login";
string inputFileName = @"FileInput.csv.pgp";
string keyFileName = @"C:\PrivateKey\keyfile.asc";
string passwd = @"z6yrFkE2NwzX";
char[] password1 = passwd.ToCharArray();
string output;
output= PGPDecrypt.Program.DecryptFile(inputFileName, keyFileName, password1, credentials, azureBlob);
string[] lines = output.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
int count = 0;
foreach(string line in lines)
{
count++;
}
int cnt;
cnt = count;
}
catch (Exception ex)
{
Dts.Events.FireError(0, "ERROR", checkPoints + ",n" + ex.Message, null, 0);
Dts.TaskResult = (int)ScriptResults.Failure;
//throw;
}
}
注意:所有必需的库已添加到ScriptMain.cs
Decrypt.cs
OP已经提到问题已经解决。
(张贴调查结果作为答案,以便如果有人在未来面临类似的问题,他会得到这个线程的解决方案。)这将对其他社区贡献者很有帮助。
在写入流(mystream.position = 0)
后将流位置设置为0
,此问题已解决。