engins 发表于 2015-8-14 08:04:59

使用Cryptography Block在IIS下运行出现的的问题

使用Enterprise Library 已经很久了,之前1.1版本的企业库里所有的程序块都使用到了,也都没有出现任何问题。2.0版的还没有完全使用,由于项目需要对数据进行加密,使用到了加密程序块。很快对它的使用接口进行一次封装,单元测试也都是通过。但是在真正使用到Web App的时候却出现了问题,对数据进行加密时抛出异常,“System.Security.Cryptography.CryptographicException: 该项不适于在指定状态下使用”,提示在下面这段代码的地方出错。

Line 78:         public virtual byte[] Unprotect()
Line 79:         {
Line 80:             return ProtectedData.Unprotect(protectedKey, null, protectionScope);
Line 81:         }起初怀疑是应用程序块的一个BUG,但经过它与执行Web App的系统用户有关。相同的代码用Dev Server运行不会出现任何的问题,但一放在IIS中马上就出错。Dev Server默认是用Administrator用户运行的,而且用普通的本地应用程序和单元测试程序都不会出错,唯有在IIS运行的Web App会出错,也尝试过把应用程序池的用户改成本地系统和本地服务都不行。DotNet加密类进行数据加密前进行什么样的操作需要与当前用户有关?而使用 密钥与当前用户息息相关的DPAPI加密,却不会出现任何问题?一个下午了,就为这一个问题我花了一整个下午的时间,还没有解决,在网上没有找到更多相关的资料,有,也都是擦边而过。晕死。
页: [1]
查看完整版本: 使用Cryptography Block在IIS下运行出现的的问题