如何在不回收应用程序池的情况下加密web.config连接字符串

时间:2016-09-27 19:58:17

标签: asp.net iis encryption web-config kentico

目标

connectionStrings 部分从 web.config 中删除,方法是将其放入external configuration file ,而能够{{ 3}}动态连接字符串没有导致应用程序池回收(这会造成意外的服务中断)。

尝试#1

  1. 我将connectionStrings部分复制到新创建的 connectionStrings.config 外部配置文件中,然后将其替换为web.config中的<connectionStrings configSource="connectionStrings.config"/>
  2. 网站恢复后,我通过命令提示符运行C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -pef "connectionStrings" %path_to_web.config_folder%来加密连接字符串
  3. 结果

    网站在运行上述命令后立即暂时停止响应,因为应用程序池因web.config更改而被回收。但是,我检查了web.config只是“触摸”,即文件的上次修改日期已更新,尽管其内容实际上没有改变。 但是,connectionStrings.config中的连接字符串已成功加密!

    我认为可能存在 aspnet_regiis.exe 的一些基本功能/限制,它们在执行此操作后会自动触及web.config,因此我寻找了另一种加密方法。这导致我......

    尝试#2

    1. 我在encrypt/decrypt(以管理员身份运行)
    2. 中打开了web.config
    3. 从下拉列表中选择 RsaProtectedConfigurationProvider 选项作为数据库设置块下的保护提供程序
    4. 保存文件
    5. 结果

      直接从connectionStrings.config文件中取出connectionStrings块并将其 back 插入到加密的web.config中。这避免了使用外部配置的全部意义,并且首先打败了尝试这种方法的目的!

      问题

      是否可以加密web.config设置而不使应用程序池在生效之前回收?我无法在微软的文档中或任何地方找到这个答案。

      谢谢!

0 个答案:

没有答案