加密连接字符串:“此操作在运行时不适用”
本文关键字:运行时 不适用 操作 连接 字符串 加密 | 更新日期: 2023-09-27 18:11:50
我有一个控制台应用程序,它有app.config。当我运行这段代码时:
class Program
{
static void Main()
{
ConnectionStringsSection connSection = ConfigurationManager.GetSection("connectionStrings") as
ConnectionStringsSection;
if (connSection != null)
{
if (!connSection.SectionInformation.IsProtected)
connSection.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
else
connSection.SectionInformation.UnprotectSection();
}
Console.Read();
}
}
我得到错误:"此操作不适用于运行时"。我也试着给我的app.config权限,但没有运气。
有什么问题?
您可以尝试以下操作:
static void Main()
{
// Get the current configuration file.
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
ConnectionStringsSection connSection = config.GetSection("connectionStrings") as
ConnectionStringsSection;
if (connSection != null)
{
if (!connSection.SectionInformation.IsProtected)
connSection.SectionInformation.ProtectSection(null);
else
connSection.SectionInformation.UnprotectSection();
}
connSection.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
Console.ReadKey();
}
我认为你应该在这种情况下使用OpenExeConfiguration
方法:
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(pathToExecutable);
ConnectionStringsSection connSection =
config .GetSection("connectionStrings") as ConnectionStringsSection;
参数pathToExecutable
应该是应用程序exe的完整路径,例如:"C:'application'bin'myapp.exe"
您不应该在运行时加密区段,您可以在运行前使用aspnet_setreg.exe工具加密它们。更多信息请点击这里。
ASP。. NET则在运行时透明地读取加密的部分。