我知道我可以这样做来加密已经部署的网站中的连接字符串:
aspnet_regiis -pe connectionStrings
我还可以通过执行以下操作在部署网站之前加密网站中的连接字符串:
aspnet_regiis -pef connectionStrings .\WebApplication1
我还知道如何制作自己的 RSA 密钥,将其安装在多台计算机上,并为该密钥设置加密提供程序,这样我就可以在一台机器上加密它并在另一台机器上发布它:
aspnet_regiis -pef connectionStrings .\WebApplication1 -prov MyProvider
我什至可以通过在 .pubxml 文件 ( https://msdn.microsoft.com/en-us/library/ee942158%28v=vs.110%29) 中添加一行来告诉 MSBuild 在部署期间为我加密连接字符串。 aspx#encrypt_webconfig)。
但我真正需要做的是:
- 创建网站源代码并将其保存在源代码管理中,并解密连接字符串;
- 构建网站,使用 web.debug.config 或 web.release.config 转换 web.config 文件;
- 使用我的自定义加密提供程序加密转换后的 web.config 中的连接字符串;
- 然后发布
全部来自自动化过程。注意:我不能先加密连接字符串然后构建网站,因为我必须在加密之前转换 web.config 文件。我不想先发布网站然后加密连接字符串,因为我不希望解密的连接字符串在 Web 服务器上出现很短的时间。我想在部署过程中加密连接字符串,但使用我自己的加密提供程序。我怎样才能做到这一点?这一定是可能的。msbuild 命令、msdeploy 命令和 .pubxml 文件设置的任意组合都是可以接受的。
我试过搜索如何做到这一点——我真的有——但我无法在任何地方找到 msbuild.exe / msdeploy.exe / *.pubxml 的全面参考。(这是一个单独的问题。)