2012-06-15 4 views
2

Как можно зашифровать строку соединения в коде C#, когда зашифрованная строка соединения хранится во внешнем файле конфигурации и указана атрибутом configSource в разделе connectionStrings файла web.config asp .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», который вставляет узел configProtectedData в файл foo.config. Это приведет к ошибке «Формат файла configSource должен быть элементом, содержащим имя раздела». при доступе в коде C#. Я что-то упускаю? – Sam

Смежные вопросы