asp.net-mvc-3 – AutoMapper线程问题(缺少类型映射配置或不支持的映射)?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-3 – AutoMapper线程问题(缺少类型映射配置或不支持的映射)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不确定这里是否有线程问题.在页面加载时,我正在执行两个Ajax请求,以从第三方API加载一些其他数据.以下是每种方法调用内容
private List<CaseCommentModel> GetCaseCommentModels(string caseId) {
    var comments = CaseService.GetAllCaseCommentsByCaseId(caseId);

    Mapper.Reset();
    Mapper.CreateMap<CrmCaseComment,CaseCommentModel>();

    var caseCommentModels = Mapper.Map<List<CrmCaseComment>,List<CaseCommentModel>>(comments);

    return caseCommentModels;
}

private List<CaseAttachmentModel> GetCaseAttachmentModels(string caseId) {
    var attachments = AttachmentService.GetAttachmentsByParentId(caseId);

    Mapper.Reset();
    Mapper.CreateMap<CrmAttachment,CaseAttachmentModel>();

    var caseAttachmentModels = Mapper.Map<List<CrmAttachment>,List<CaseAttachmentModel>>(attachments);

    return caseAttachmentModels;
}

有时两种反应都会成功但是,如果我刷新页面,有时会出现以下异常:

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

我可以从成功失败的两个请求转到不做任何代码更改;只需刷新页面即可.这是一个线程问题还是我错误地使用了映射器?

解决方法

您应该每个应用程序生命周期只创建一次映射.因此,将每个特定的CreateMap移动到应用程序启动.

您遇到的问题可能与在另一个线程调用Mapper.Reset()之前进行映射的竞争有关.

猜你在找的asp.Net相关文章