使用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加密,却不会出现任何问题?一个下午了,就为这一个问题我花了一整个下午的时间,还没有解决,在网上没有找到更多相关的资料,有,也都是擦边而过。晕死。Line 79: {
Line 80: return ProtectedData.Unprotect(protectedKey, null, protectionScope);
Line 81: }
阿不 http://hjf1223.cnblogs.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述