我无法在app.config中加密连接字符串。我的代码将保护app.config的connectionStrings部分,但密码仍然以纯文本显示。
我需要加密连接字符串,因此在部署时它不是纯文本。我在web.config上看到了类似的问题,但不是app.config。
答案 0 :(得分:50)
您可以轻松应用与web.config相同的解决方案,您只需将app.config重命名为web.config,使用aspnet_regiis工具加密,然后将其重命名为app.config。
%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" c:\<folder containing your web.config>
(在文件夹级别停止,不要将尾随“\”)您可以在记事本中打开它以查看加密文件。在visual studio中,您将看到它已被解密。您可以像使用未加密的方式一样使用连接字符串。
答案 1 :(得分:22)
看看This Article它有一些非常有用的例子。您基本上是在寻找System.Configuration.SectionInformation.ProtectSection
来帮助您。
答案 2 :(得分:3)
定义config
文件
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
如果您想加密connectionStrings
config.ConnectionStrings.SectionInformation.ProtectSection(Nothing);
您必须了解应用配置部分
所以,如果你想加密AppSettings
config.AppSettings.SectionInformation.ProtectSection(Nothing);
答案 3 :(得分:2)
•重命名App.config file to web.config<br>
•以管理员身份运行命令提示符:
用于加密:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings"
在引号和-prov "DataProtectionConfigurationProvider"
中的项目位置
例如:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "D:\location\location1\location" -prov "DataProtectionConfigurationProvider"
用于解密:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings"
用引号引起来的项目位置。
例如:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" "D:\location1\location"
对于错误:
在配置xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"
赞:
•最后,将web.config
重命名为App.Config
答案 4 :(得分:0)
自动执行此操作的方法:
ProjectSettings>编译> BuildEvents>编辑后期生成
粘贴以下代码:
SET ApplicationName=YourAppWithoutExtention
echo.
echo POST BUILD ACTIONS
echo ====================
if EXIST web.config (
echo Deleting web.config
DEL web.config
)
echo Renaming %ApplicationName%.exe.config to web.config
REN %ApplicationName%.exe.config web.config
echo Running aspnet_regis against webconfig
SET rpath=%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" "$(TargetDir)
SET rpath=%rpath:~0,-1%"
echo Path: %rpath%
%rpath%
echo Renaming web.config to %ApplicationName%.exe.config
REN web.config %ApplicationName%.exe.config
echo Done.
使用您的应用名称替换“ YourAppWithoutExtention”。
然后每次构建时,它将自动对您的app.config进行加密。
答案 5 :(得分:0)
此外,如果要在网络场中加密和解密连接字符串的任何人,请按以下步骤操作:
创建RSA密钥:
aspnet_regiis -pc "MyKeys" -exp
授予对此密钥的应用程序池标识的访问权限:
aspnet_regiis -pa "MyKeys" "IIS AppPool\ApplicationPoolName" -full
将RSA提供程序添加到web.config:
<configuration>
<configProtectedData>
<providers>
<add name="MyProvider"
type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
processorArchitecture=MSIL"
keyContainerName="MyKeys"
useMachineContainer="true" />
</providers>
</configProtectedData>
</configuration>
使用RSA提供程序加密web.config:
aspnet_regiis -pe "connectionStrings" -app "/MyApplication" -prov "MyProvider"
注意:您可以使用其他语法,例如我们针对单服务器方案所做的语法。例:
ASPNET_REGIIS -pef "connectionStrings" "D:\inetpub\wwwroot\applicationFolder" -prov "MyProvider"
aspnet_regiis -px "MyKeys" "c:\keys.xml" -pri
aspnet_regiis -pi "MyKeys" "c:\keys.xml"