我正在尝试使用名为“ 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,
MyProtectionConfigurationProvider, Version=1.0.0.0,Culture=neutral,
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系统找不到指定的文件。”
我犯了什么错误?
答案 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.");
}
}