因为系统需要对一些核心数据进行预加载以保证查询速度。

所以在application_start 事件中启用了后台线程对相关的数据进行加载并解密(为了保证解密的效率,将AES对像做了静态对像来保存:private static readonly Aes aesAlg = Aes.Create();)

但是在有些情况下报“Safe handle has been closed”异常导致加载失败。

具体的堆栈信息:

System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success)
at System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success)
at System.Security.Cryptography.CapiNative.UnsafeNativeMethods.CryptDuplicateKey(SafeCapiKeyHandle hKey, IntPtr pdwReserved, Int32 dwFlags, SafeCapiKeyHandle& phKey)
at Microsoft.Win32.SafeHandles.SafeCapiKeyHandle.Duplicate()
at System.Security.Cryptography.CapiSymmetricAlgorithm.SetupKey(SafeCapiKeyHandle key, Byte[] iv, CipherMode cipherMode, Int32 feedbackSize)
at System.Security.Cryptography.AesCryptoServiceProvider.CreateDecryptor(SafeCapiKeyHandle key, Byte[] iv)

经查阅到一篇资料得知:

在通常情况下可以重用这个对像,但是最好不要在多线程中使用。

所以,解决方法:

要么将AES对像每次实例化(但效率会降低),

要么就用其它的来代替,比如(RijndaelManaged,正在测试,目前没有发现此问题了)。

最新文章

  1. __getattitem_ \__setattitem__\__delitem__
  2. 12306订票助手.net版如何抢指定过路某一地点的火车票
  3. 工作记事 unknownHost
  4. SQL*Loader之CASE8
  5. [ruby]Windows Ruby安装步骤
  6. 黑马程序员——【Java高新技术】——JavaBean、注解
  7. 排序算法——QuickSort、MergeSort、HeapSort(C++实现)
  8. saxReader的列子
  9. Day 2 @ RSA Conference Asia Pacific & Japan 2016
  10. Android中Style和Theme的使用
  11. LinQ 语法基础
  12. BootstrapTable+KnockoutJS实现增删改查解决方案
  13. golang基础数据结构
  14. .NET中的类库
  15. Oracle用户密码过期和用户被锁解决方法【转】
  16. 深入理解事件(Event)
  17. Go语言之高级篇beego框架之日志收集系统
  18. vue-demo(初级)
  19. 使用 ReentrantLock 和 Condition 实现一个阻塞队列
  20. js数据结构之链表(单链表、双向链表、循环链表)

热门文章

  1. struts2.1.6教程十二、总结
  2. $.when()方法翻译
  3. 使用sqlserver搭建高可用双机热备的Quartz集群部署【附源码】
  4. 数据库插入数据失败,log提示不能将值 NULL 插入列 'id'
  5. Web缓存相关知识整理
  6. Java之进程与线程练习
  7. python基础操作_集合_三元运算
  8. map,zip,reduce函数
  9. orcle自定义类型type/create or replace type
  10. 手机wap网站建设的方法和技巧