加密設定檔(App.Config和Web.config)中connectionStrings通用方法

來源:互聯網
上載者:User

標籤:

    1、 背景:根據項目的要求,需要對設定檔配置的資料庫連接字串進行加密,也就是對ConnectinString節點的內容進行加密儲存,同時考慮到代碼使用連接字串不需要變更,C#會自動對加密的內容進行解密。

    2、需求:因此考慮單獨開發一個winform程式,對設定檔進行加密和解密,通過ConfigurationManager中的OpenMappedExeConfiguration方法建立一個Configuration對象,然後在對這個對象中的指定節點進行操作。

     遇到的問題:

  

ConfigurationManager.OpenExeConfiguration("C:\Charles2008.config");     

這個方法在當前的目錄下產生一個副本("C:\Charles2008.config.config"),而且返回的Configuration對象操作的不是Charles2008.config檔案,而是程式自動建立的Charles2008.config.config檔案,然而如果我把檔案Charles2008.config更名為Charles2008.config.config檔案或者刪除Charles2008.config檔案卻提示:

 

載入設定檔時出錯: 參數“exePath”無效。
參數名: exePath

    3、解決方案:從網上尋找協助,發現還真的有和我遇到一模一樣的問題,只需要在以上的代碼進行稍微一點改動即可,改動後不組建檔案副本,直接操作檔案,更新也是操作此檔案。

   //先執行個體化一個ExeConfigurationFileMap對象,把物理地址賦值到它的 ExeConfigFilename 屬性中; 
            ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); 
            fileMap.ExeConfigFilename = @"C:\Charles2008.config"; 
  
            //再調用fileMap 執行個體化 config , 這樣,操作的檔案就是Charles2008.config檔案了,也不會產生副本檔案 
            Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 

    4、加密連接字串:上面技術痛點解決後,根據擷取到Configuration對象Config調用以下方法即可對連接字串進行加密。(僅針對ConectionString節點)

     

   ConfigurationSection connectionSection = config.GetSection("connectionStrings");
                if (connectionSection != null)
                {
                    connectionSection.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");
                    config.Save();
                    MessageBox.Show("儲存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

   5、 備忘

    加密和解密在同一台電腦上使用,在加密過程中,使用了一個基於原生密鑰。這就意味著加密和解密必須在同一台電腦上進行,否則將不能解密。同時,在一台電腦上加密的配置,在另一台電腦上將不能正常使用。

     連接字串加密工具

 

加密設定檔(App.Config和Web.config)中connectionStrings通用方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.