Ошибка шифрования web.config
Я знаю, что ppl уже задавали вопросы о шифровании web.config.
im также пытается зашифровать мой тестовый файл конфигурации, но im получает эту ошибку.
aspnet_regiis -pef "connectionStrings" "C:\encryptedWeb.config"
Шифрование раздела конфигурации...
Невозможно открыть конфигурацию для физического пути "C:\EncryptedWeb.config".
Ошибка!
Я просто хочу знать, каковы могут быть причины, по которым это не удалось.
Я получил ответ, это была проблема с readonly для web.config.
После того, как я удалил readonly, он работал как шарм.
Ответы
Ответ 1
для команды "aspnet_regiis -pef" путь к файлу конфигурации - это физический путь (не виртуальный), а также путь к папке/папке, где находится web.config. Поэтому не следует указывать имя файла в пути, например.
если ваш путь web.config находится в D:\MyConfiguration\web.config
, тогда при шифровании/расшифровке вы будете использовать его следующим образом:
шифровать:
aspnet_regiis -pef [sectionName] "D:\MyConfiguration"
расшифровывать:
aspnet_regiis -pdf [sectionName] "D:\MyConfiguration"
Ответ 2
Разделы CASE SENSITIVE.
Не добавляйте \
в конец пути (не требуется web.config).
Вам не нужно делать это прямо на сайте; вместо этого скопируйте файл в любое место.
шифрованный:
aspnet_regiis -pef "SECTIONTOENTRYPT" "d:\tempEnCrypt" -prov WhateverProviderYouAreUsing
дешифрование:
aspnet_regiis -pdf "SECTIONTOENTRYPT" "d:\tempEncrypt"
Вы можете использовать это для шифрования app.config, просто переименуйте файл для шифрования/дешифрования как web.config
Ответ 3
Я знаю, что это старо, но у меня была одна и та же проблема, и ни один из других ответов не получил проблемы.
Вы не должны указывать имя файла в пути, и файл ДОЛЖЕН быть вызван web.config
. Итак, для вашего примера, если ваш файл web.config
на самом деле находится в C:\
, вы должны поставить:
aspnet_regiis -pef "connectionStrings" "C:\"
и ваш файл ДОЛЖЕН называться web.config
, поскольку инструмент будет искать только этот файл.
Для тех людей, чей файл не находится в C:\
, вам нужно будет поместить полный путь к файлу (корень сайта). Вам также потребуется cd
в каталог, содержащий файл aspnet_regiis.exe
, или поместите полный путь к файлу для инструмента:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -pef "ConnectionStrings" "C:\Ghron\Projects\Company\trunk\project1\project1"
Кроме того, некоторые из других ответов являются допустимыми точками - параметры чувствительны к регистру, поэтому ваши пути и имена разделов должны быть в правильном порядке. Я потратил около 20 минут, используя "ConnectionStrings"
вместо "ConnectionStrings"
(нижний регистр c).
Ответ 4
Взгляните на это, посмотрите, правильно ли настроили его.
http://msdn.microsoft.com/en-us/library/ms998283.aspx
Возможность указать сайт с -site "SiteName"
в противном случае он будет использовать веб-сайт по умолчанию.
Ответ 5
Вы можете попробовать и использовать этот инструмент для шифрования вашей веб-конфигурации
Ответ 6
У меня была одна и та же проблема, и вот что сработало для меня:
- добавить путь папки инструмента aspnet_regiis к переменной% PATH%. Это гарантирует, что инструмент доступен из любой папки в командной строке. См. Эту страницу для краткого объяснения того, как добавить% PATH% переменных: http://geekswithblogs.net/renso/archive/2009/10/21/how-to-set-the-windows-path-in-windows-7.aspx
- перейдите в свою веб-корневую папку (не знаю, нужно ли это, но то, куда я был перемещен, когда я выполнил команду)
-
выполните команду с аргументом -pe и аргументом -app следующим образом:
aspnet_regiis -pe {секция для шифрования} -app "{путь из корневой папки в приложение, например:" /myappname ", использование кавычек}
Ответ 7
У меня такая же проблема при шифровании файла конфигурации с веб-сайта.
Предоставить команду для шифрования с сайта, а не по умолчанию.
Команда ниже работает, когда приложение находится в defaultwebsite:
aspnet_regiis.exe -pe "connectionStrings" -app "/sitename" -prov "DataProtectionConfigurationProvider"
Ответ 8
Я получил ошибку "незаконные символы в пути", которая исчезла, когда я удалил двойные кавычки, которые окружали мое имя пути. Не имеет никакого смысла, но вы там.
Я также написал PowerShell script для шифрования/дешифрования без обращения к aspnet_regiis: https://github.com/mhenry1384/EncryptDecryptConfig
Ответ 9
Зашифровать/расшифровать web.config
<configuration>
<configSections>
<section name="SecuredSettings" type="System.Configuration.NameValueSectionHandler" />
</configSections>
<SecuredSettings>
<add key="pwrd" value="password" />
</SecuredSettings>
<configProtectedData>
<providers>
<add keyContainerName="MyCustomKeys"
useMachineContainer="true"
name="MyEncryptionProvider"
type="System.Configuration.RsaProtectedConfigurationProvider"/>
</providers>
</configProtectedData>
</configuration>
- В С# вы можете получить эти значения, как обычно. например:
var attr = ConfigurationManager.GetSection("SecuredSettings") as NameValueCollection;
var value = attr["pwrd"];
- Остальное - это шифрование или дешифрование.
- Запустите cmd от имени администратора и найдите
C:\Windows\Microsoft.NET\Framework\v4.0.30319
- "Создайте пару открытых/закрытых ключей RSA с конкретным именем контейнера. Они также должны быть помечены как экспортируемые (иначе какой смысл!)"
-
aspnet_regiis.exe -pc MyCustomKeys -exp
- "Предоставить разрешения для учетных записей для доступа к контейнеру"
-
aspnet_regiis.exe -pa MyCustomKeys "NT AUTHORITY\NETWORK SERVICE"
- "Следующая строка теперь будет шифровать ваш раздел (значение pwdr). Переключатель -pef сообщает приложению, что нужно искать файл web.config и использовать провайдер, объявленный в начале (который использует тип RsaProtectedConfigurationProvider)"
-
aspnet_regiis.exe -pef "SecuredSettings" "C:\DEV\ConsoleApp\DEX" -prov MyEncryptionProvider
- Экспортируйте эти ключи на другой компьютер (при необходимости)
-
aspnet_regiis.exe -px MyCustomKeys keys.xml -pri
он сгенерирует файл keys.xml
в C:\Windows\Microsoft.NET\Framework\v4.0.30319 - скопируйте этот файл и поместите его на другой компьютер, на котором вы хотите его использовать, в то же место C:\Windows\Microsoft.NET\Framework\v4.0.30319 и запустите:
-
aspnet_regiis -pi MyCustomKeys keys.xml
- после вы можете удалить файл с обеих сторон.
- Не забудьте переименовать Web.config в App.config, если вы сделали это в начале.
- Чтобы расшифровать файл:
-
aspnet_regiis.exe -pdf "SecuredSettings" "C:\DEV\ConsoleApp\DEX"