加密连接字符串:"This operation does not apply at runtime"



我有一个控制台应用程序,它有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:applicationbinmyapp.exe"

您不应该在运行时加密区段,您可以在运行前使用aspnet_setreg.exe工具加密它们。更多信息请点击这里。

ASP。. NET则在运行时透明地读取加密的部分。

最新更新