【发布时间】:2011-12-02 22:13:02
【问题描述】:
在这种情况下,我使用 ASP.MVC 3.0 中的 AutoMapper 库来处理 dto 和模型对象之间的映射。我试图将所有 AutoMapper 配置代码放在一个地方,所以它具有以下结构:
protected void Application_Start()
{
ConfigureAutoMapper();
AreaRegistration.RegisterAllAreas();
SetupWindsorContainer();
RegisterRoutes(RouteTable.Routes);
}
...
private void ConfigureAutoMapper()
{
Mapper.CreateMap<SampleDto, SampleModel>();
...
}
此代码放在MvcApplication 类中。使用调试器,我检查了此代码是否已执行,但是当我尝试在控制器代码中执行 Mapper.Map<> 时,我收到异常说映射尚未注册。我曾怀疑这与 ASP.MVC 如何处理 AppDomains 有关,但在两种方法(注册代码和映射代码)中似乎是相同的 AppDomain。 ASAIR 此代码在 ASP.MVC 2.0 上正确执行
编辑 1:
根据Application_Start 上的 MS 文档:
"在 ASP.NET 中的第一个资源(例如页面)时调用 申请。仅调用 Application_Start 方法 在应用程序的生命周期中进行一次。你可以用这个 执行启动任务的方法,例如将数据加载到缓存中 并初始化静态值。
您应该在应用程序启动期间只设置静态数据。不要设置 任何实例数据,因为它只对第一个可用 创建的 HttpApplication 类的实例。”
AutoMapper 配置是静态类,所以我认为在 Application_Start 中初始化时它应该可以正常工作,但它没有。
【问题讨论】:
标签: .net asp.net-mvc automapper