我在加密 app.config 中的连接字符串时遇到问题。我有保护 app.config 的 connectionStrings 部分的代码,但密码仍以纯文本形式显示。
我需要加密连接字符串,因此在部署时它不是纯文本。我在 SO for web.config 上看到了类似的问题,但不是 app.config。
我在加密 app.config 中的连接字符串时遇到问题。我有保护 app.config 的 connectionStrings 部分的代码,但密码仍以纯文本形式显示。
我需要加密连接字符串,因此在部署时它不是纯文本。我在 SO for web.config 上看到了类似的问题,但不是 app.config。
您可以轻松地应用与 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 中,您会看到它已被解密。您可以像未加密一样使用连接字符串。(请注意,它只能在加密的同一台机器上解密。)
• 重命名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
此外,如果有人想在网络场中加密和解密连接字符串,请执行以下步骤:
创建 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"
打开 web.config 并确认连接字符串已加密
测试站点并确认它正在运行
尝试解密 web.config。使用下面的代码创建一个 test.aspx 文件。浏览它以查看解密文件
将 RSA 密钥导出到 C 盘:
aspnet_regiis -px "MyKeys" "c:\keys.xml" -pri
将此文件复制到网络场中的第二个服务器
将其导入该服务器:
aspnet_regiis -pi "MyKeys" "c:\keys.xml"
授予对此密钥的访问权限(与步骤 2 相同)
在第二台服务器中测试应用程序
来源:如何加密和解密连接字符串
定义config
文件的位置
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
如果你想加密 connectionStrings
config.ConnectionStrings.SectionInformation.ProtectSection(Nothing);
您必须了解应用程序配置部分
所以如果你想加密AppSettings
config.AppSettings.SectionInformation.ProtectSection(Nothing);
一种自动化的方法:
ProjectSettings > Compile > BuildEvents > Edit Post-build
粘贴以下代码:
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。