我有一个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机器上
答案 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