1

几天来我一直在努力解决一个非常奇怪的问题。我在静态类中注册了一些 Automapper 映射,如下所示:

public static class AutomapperConfig
{
    public static void Configure()
    {
        Mapper.CreateMap<Person, EditPersonViewModel>();
        Mapper.CreateMap<User, EditUserViewModel>();
    }
}

这个类本身是从 global.asax 中的 application_start 调用的。到目前为止一切顺利,因为在我的开发环境中一切正常。

在我们的生产环境中,我们遇到了一些我们无法解释的行为。一段时间后,应用程序开始抛出这些异常:

缺少类型映射配置或不支持的映射

这很奇怪,因为映射是存在的。修复此问题的快速解决方法是回收应用程序池,这反过来会导致 application_start 再次运行。

我们怀疑在应用程序池空闲超时后重新启动应用程序后出现问题。但不幸的是,我们无法通过减少 IIS 空闲超时来重现该问题。

顺便说一句,我们已经排除了其他一些可能的原因:

  1. AutomapperConfig 类不是静态的
  2. 我们使用了一些 Autofac 的东西来注册 Automapper 地图,但是因为我们认为这可能是一个问题,所以我们删除了 Autofac 部分

关于这个问题的原因有什么想法吗?

4

0 回答 0