无法在SSIS的脚本任务中使用c#脚本将PGP加密的文件从Azure Blob存储解密为流



我正在尝试使用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,此问题已解决。

相关内容

  • 没有找到相关文章

最新更新