我一直在一个项目中,将所有应用程序移至使用外部.config文件来存储连接字符串,因此不再将其保留在源代码管理中。作为其一部分,我们现在在部署时对这些连接字符串进行加密。
web.config
<connectionStrings configSource="ConnectionStrings.config"/>
ConnectionStrings.config
<connectionStrings>
<add name="MyDatabase" connectionString="MyConnectionString" providerName="System.Data.SqlClient">
</connectionStrings>
由于构建服务器的限制,我不得不将此应用程序从.NetFramework 4.0
更新为.NetFramwork 4.7.2
。
要加密连接字符串,到目前为止,我已经针对我们所有的应用程序运行了以下命令(在Web服务器上)。其中一些也是框架升级。注意:我们为每个网络应用程序提供了自己的应用程序池。
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe" -pe "connectionStrings" -app "/MyApplication" -site "Default Web Site"
到目前为止,每个站点在我们所有的环境中都可以正常工作。现在,这个最新的加密后会导致一个无限重定向循环,每个循环
都具有相同的错误无法使用提供程序'RsaProtectedConfigurationProvider'解密。提供者的错误消息:RSA密钥容器无法打开。
如果我转到服务器并运行命令行进行解密,则它将成功,并且该应用程序将正常运行。我感到困惑,而且我的任何一个同事都不知道。我知道它必须特定于此应用程序,但我不知道从哪里开始。这是一个旧的应用程序,我什至没有工作,对此一无所知。我浏览了无数类似RSA投诉的页面,但似乎都不是这个特定问题。是的,我能够在多个服务器上甚至在我自己的机器上复制它。