2012-06-15 149 views
2

如果加密連接字符串保存在外部配置文件中,並且由asp的web.config的connectionStrings部分中的configSource屬性指定,那麼如何在C#代碼中讀取加密連接字符串.net應用程序?web.config中的加密連接字符串

外部配置文件應該只有connectionStrings節點,但是當它被加密時,configDataProvider節點也應該出現在同一個文件中。所以它不能用在configSource屬性中。

我有加密連接字符串,並希望它在外部配置文件。這怎麼處理?

感謝您的指點。

+0

你嘗試把連接字符串一節中的外部文件和_then_加密它? – Oded

+0

有點過時了,但你可以試試這個解決方案:[在ASP.NET的外部配置中加密字符串](http://gregorybeamer.wordpress.com/2008/12/04/encrypting-string-in-an-external -config-for-asp-net /) – Jeremy

+0

如果將其放入外部文件中,然後對其進行加密,則會在插入configProtectedData節點後使用configSource屬性對其進行讀取。 – Sam

回答

3

在你的app.config:

<configuration> 
    <connectionStrings configSource="foo.config" /> 
    ... 
</configuration> 

,並在您foo.config

<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider"> 
    <EncryptedData> 
     <CipherData> 
      <CipherValue> 
       AQAAANCMnd8BFdE.... 
      </CipherValue> 
     </CipherData> 
    </EncryptedData> 
</connectionStrings> 

並在代碼:

ConfigurationManager.ConnectionStrings["someKey"] 
+0

我想在純文本中使用foo.config並在部署過程中加密,最好不必像手動刪除任何節點一樣進行任何操作。 – Sam

+0

@Sam,閱讀關於如何完成加密:http://msdn.microsoft.com/en-us/library/ff647398.aspx。這個過程當然可以腳本化和自動化。我已經展示了你的配置在運行時應該如何看待。爲了達到此配置,您可以使用未加密的文件包含連接字符串並編寫文檔中描述的加密過程。因此,請繼續閱讀本文檔以瞭解此過程,以便在構建過程中編寫腳本。 –

+0

我將connectionStrings作爲單獨的文件foo.config。假設我在使用-prov「Myprovider」開關部署期間使用腳本進行加密,該開關將在foo.config中插入configProtectedData節點。這將導致錯誤「configSource文件的格式必須是包含該部分名稱的元素。」當在C#代碼中訪問時。我錯過了什麼嗎? – Sam