AutoMapper IIS回收引发的 未将对象引用设置到对象实例
作者:jianxuanbing
本文为作者原创,转载请注明出处:https://www.cnblogs.com/jianxuanbing/p/7823856.html
一、前言
最近使用AutoMapper
的时候,一段时间久会产生System.NullReferenceException:未将对象引用设置到对象的实例。
这个问题。后来通过测试,发现部署在IIS
上的站点,默认情况下,IIS会在每个间隔固定时间回收AppPool
,如果刚刚好有很多请求访问调用了AutoMapper
映射的接口,就会产生如下问题。
System.NullReferenceException: 未将对象引用设置到对象的实例。
在 AutoMapper.TypeMapFactory.<>c__DisplayClass3_0.<MapDestinationPropertyToSource>b__0(IMemberConfiguration _)
在 System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate)
在 AutoMapper.TypeMapFactory.CreateTypeMap(Type sourceType, Type destinationType, IProfileConfiguration options, MemberList memberList)
在 AutoMapper.ConfigurationStore.<>c__DisplayClass80_0.<CreateTypeMap>b__0(TypePair tp)
在 System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
在 AutoMapper.ConfigurationStore.CreateMap[TSource,TDestination](String profileName, MemberList memberList)
在 PaymentPlatform.Test.AutoMapperTest.ProcessRequest(HttpContext context)
二、解决方案
方法一
打开对应IIS站点的应用程序池,点击高级设置
。如下图:
将上图中的固定时间间隔(分钟)
设置为0.
方法二
可在全局的Application_Start
中,定义所有的AutoMapper
类型映射。这样就可以保证映射关系的一次性初始化。后续代码无需再定义,只需关注对象转换就可以了。
方法三
也可使用AutoMapper扩展这种方式进行使用,对于不存在的配置,自动创建相关的映射。
分类:
C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端