几天来我一直在努力解决一个非常奇怪的问题。我在静态类中注册了一些 Automapper 映射,如下所示:
public static class AutomapperConfig
{
public static void Configure()
{
Mapper.CreateMap<Person, EditPersonViewModel>();
Mapper.CreateMap<User, EditUserViewModel>();
}
}
这个类本身是从 global.asax 中的 application_start 调用的。到目前为止一切顺利,因为在我的开发环境中一切正常。
在我们的生产环境中,我们遇到了一些我们无法解释的行为。一段时间后,应用程序开始抛出这些异常:
缺少类型映射配置或不支持的映射
这很奇怪,因为映射是存在的。修复此问题的快速解决方法是回收应用程序池,这反过来会导致 application_start 再次运行。
我们怀疑在应用程序池空闲超时后重新启动应用程序后出现问题。但不幸的是,我们无法通过减少 IIS 空闲超时来重现该问题。
顺便说一句,我们已经排除了其他一些可能的原因:
- AutomapperConfig 类不是静态的
- 我们使用了一些 Autofac 的东西来注册 Automapper 地图,但是因为我们认为这可能是一个问题,所以我们删除了 Autofac 部分
关于这个问题的原因有什么想法吗?