是否应该在开发和生产环境中使用相同的机器密钥?

我们的生产服务器都有相同的机器密钥。 但是,我们的生产和开发系统没有相同的机器密钥。 我们得到表格的例外(大约每秒一次)

System.Security.Cryptography.CryptographicException: Padding is invalid and cannot be removed. at System.Security.Cryptography.RijndaelManagedTransform.DecryptData() at System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock() at System.Security.Cryptography.CryptoStream.FlushFinalBlock() at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData() at System.Web.UI.Page.DecryptStringWithIV()... 

我们在构build之后部署代码,.cs源文件在生产中不存在。 aspx文件存在于生产中。

(我应该在Stack Overflow中发布吗?这不是一个编码问题。)

从实验中,我们发现使用开发机器键值导致exception消失。 有没有人有文档,我可以使用与安全团队在编译和部署时需要相同的键?

答案是不。

不使用相同的机器密钥的原因是开发人员不应该看到生产环境密钥。 如果你有一个前工作者或外部顾问,你不能保证他们不会将开发代码传播到某个地方。 在错误的手中,这些键可以很容易地攻击服务器。

这是一个不错的链接。