我知道ppl已经提出了有关加密web.config的问题。
我也试图加密我的测试配置文件,但我得到了这个错误。
aspnet_regiis -pef“connectionStrings”“C:\ encryptedWeb.config” 加密配置部分...... 无法打开物理路径“C:\ EncryptedWeb.config”的配置。 失败!
我只想知道,失败的原因可能是什么原因。
我得到了答案,这是web.config的readonly属性,这是问题所在。 我删除了readonly之后就像魅力一样。
答案 0 :(得分:34)
对于命令“aspnet_regiis -pef”,配置文件的路径是物理路径(非虚拟),也是web.config所在的目录/文件夹的路径。因此,不应该在路径中包含文件名称,例如
如果您的web.config路径位于D:\MyConfiguration\web.config
,那么在加密/解密时,您将按以下方式使用它:
<强>加密强>
aspnet_regiis -pef [sectionName] "D:\MyConfiguration"
<强>解密:强>
aspnet_regiis -pdf [sectionName] "D:\MyConfiguration"
答案 1 :(得分:5)
我知道这已经过时了,但我遇到了同样的问题,其他答案都没有解决问题。
你不应该把文件名放在路径中,文件必须被称为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"
此外,其他一些答案是有效的 - 参数区分大小写,因此您的路径和部分名称必须是正确的。我使用"ConnectionStrings"
代替"connectionStrings"
(小写c)浪费了大约20分钟。
答案 2 :(得分:0)
看看这个,看看你是否正确设置了
http://msdn.microsoft.com/en-us/library/ms998283.aspx
可能性是指定网站 -site“SiteName” 否则它将使用默认网站。
答案 3 :(得分:0)
您可以尝试使用此tool加密您的网络配置
答案 4 :(得分:0)
我遇到了同样的问题,这对我有用:
使用-pe参数和-app参数执行命令,如:
aspnet_regiis -pe {section to encrypt} -app“{path from root folder to app,like:”/ myappname“,use quotes}
答案 5 :(得分:0)
我在从网站加密配置文件时遇到同样的问题。 提供从网站而非默认网站加密的命令。 当应用程序位于defaultwebsite时,以下命令有效: aspnet_regiis.exe -pe&#34; connectionStrings&#34; -app&#34; / sitename&#34; -prov&#34; DataProtectionConfigurationProvider&#34;
答案 6 :(得分:0)
当我删除了包含我的路径名的双引号时,我收到了“路径中的非法字符”错误。没有任何意义,但你有。
我还编写了一个PowerShell脚本来执行加密/解密而不处理aspnet_regiis:https://github.com/mhenry1384/EncryptDecryptConfig
答案 7 :(得分:0)
SecuredSettings
(可以使用任何名称)。 <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"];
C:\Windows\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe -pc MyCustomKeys -exp
aspnet_regiis.exe -pa MyCustomKeys "NT AUTHORITY\NETWORK SERVICE"
aspnet_regiis.exe -pef "SecuredSettings" "C:\DEV\ConsoleApp\DEX" -prov MyEncryptionProvider
aspnet_regiis.exe -px MyCustomKeys keys.xml -pri
,它将在 C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 keys.xml
文件
aspnet_regiis -pi MyCustomKeys keys.xml
aspnet_regiis.exe -pdf "SecuredSettings" "C:\DEV\ConsoleApp\DEX"