密钥无效错误在一个项目中但在同一解决方案的不同项目中工作

时间:2013-07-17 22:17:03

标签: c# cryptography system.security

我有一个C#解决方案,它使用System.Security来解密TFS服务器的密码。安全例程保存在解决方案中的单独项目中。解决方案中还有另外两个项目使用该模块解密此信息。

它使用DPAPI和LocalMachineKey加密。从解决方案部署的两个项目是Windows Service .exe和.dll。

一切都运行良好,除了最近我必须测试一个使用解密模块的项目(TFS工作项事件处理程序)的新部署。我在我的机器上构建了项目,并将dll部署到测试TFS服务器。我立即开始收到这个错误:

System.Security.Cryptography.CryptographicException: Key not valid for use in specified state.

   at System.Security.Cryptography.ProtectedData.Unprotect(Byte[] encryptedData, Byte[] optionalEntropy, DataProtectionScope scope)

现在,让我绝对疯狂的是,使用完全相同模块的其他项目(Windows服务)继续正常工作。密码是相同的,配置文件没有改变,但一个应用程序工作,另一个...没有。

有人能指点我看看发生了什么吗?在测试服务器上构建项目似乎没有帮助,也没有在测试计算机上重新加密密码以确保它使用正确的密钥。我现在已经把头发撕了两天了 - 这是一个非常小的改变,但我不能部署它,直到我至少可以测试它,我不希望这个问题发生在prod机器上

1 个答案:

答案 0 :(得分:0)

删除文件夹HKEY_CURRENT_USER \ Software \ Microsoft \ VSCommon \ 12.0 \ ClientServices \ TokenStorage

重新启动Visual Studio

它应该再次运作。

http://davestechsolutions.blogspot.com.au/2015/11/key-not-valid-for-use-in-specified.html