加密连接字符串时发生错误

时间:2019-04-16 09:54:44

标签: asp.net-mvc-3 encryption web-config app-config aspnet-regiis.exe

我正在尝试使用名为“ MyConfigProtectionProvider”的自定义Config Protection Provider解密我的app.config中的连接字符串。我没有这个自定义配置提供程序的代码,因为它是很久以前开发的,我只有DLL文件。我们更改了数据库用户名和密码。我想使用此自定义的Config Protection Provider解密Web.Config中的连接字符串,并将密码更改为新密码,然后再次对其进行加密

我只有app.config。因此,我将其重命名为“ web.config”。然后,我在web.config中添加了 CODE I ,如下所示。我将密钥存储在c驱动器中,并且需要提供密钥文件路径。 “ MyConfigProtectionProvider”将使用此密钥对其进行加密。

我们已经加密了连接字符串,如 CODE II 中所示。所以我尝试使用cmd中的以下命令作为Admin解密它

  

aspnet_regiis.exe -pdf“ connectionStrings”   “ C:\ Users \ Tejas \ Documents \ Email_Notification \ LatestBatchJobStatus \ BatchJobStatus \ Batch_Job_Status”

  -prov "MyConfigProtectionProvider"

代码I:

<configProtectedData defaultProvider="MyProtectionConfigurationProvider">
<providers><add name="MyProtectionConfigurationProvider" type="MyProtectionConfigurationProvider,&#xD;&#xA;MyProtectionConfigurationProvider, Version=1.0.0.0,Culture=neutral,&#xD;&#xA;PublicKeyToken=#############, processorArchitecture=MSIL"keyFilePath="C:\Users\Tejas\Documents\Email_Notification\LatestBatchJobStatus\BatchJobStatus\Batch_Job_Status\ConnectionKey\ConnectionKey.txt" /></providers></configProtectedData>

CODE II:

<connectionStrings configProtectionProvider="MyProtectionConfigurationProvider">  <EncryptedData>7Zqa4I623WR..................</EncryptedData></connectionStrings>

我遇到以下错误 “发生错误:0X80070002系统找不到指定的文件。”

我犯了什么错误?

1 个答案:

答案 0 :(得分:0)

听起来好像找不到配置文件。解密时,查看是否可以捕获该FileNotFound异常以查看有关该异常的更多详细信息:

 private static string GetSecureConnectionString(string connStringName)
        {
            try
            {
                Log.Debug("Starting Decryption of ConnectionString Named " + connStringName);
                var sEncrypted = ConfigurationManager.ConnectionStrings[connStringName].ConnectionString;
                Log.Debug("sEncrypted = " + sEncrypted);
                _connectString = Encryption.Decrypt(sEncrypted);
                Log.Debug("Did It Work? = " + _connectString);
                return _connectString;

            }
            catch (System.IO.FileNotFoundException ex)
            {
                Log.Debug("ERROR - Unable to locate the configuration file [" + ex.FileName.ToString() + "]");
                throw;
            }
            catch (ConfigurationErrorsException ex)
            {
                Log.Debug("ERROR - Error retrieving ConnectionString", ex);
                throw;
            }
            catch (Exception ex)
            {
                Log.Debug("ERROR - Error Decrypting ConnectionString", ex);
                throw new ApplicationException("ERROR: DataAccess:GetSecureConnectionString Failed. See ErrorLog for details.");
            }
        }