所以这就是故事 - 在将服务模型映射到域模型时,我在WCF服务中发生了错误。我使用automapper做两个层之间的映射。我的映射字符串如下:
Mapper.CreateMap<WM.CAD.BusinessLayer.Models.Job, JobResponse>()
.ForMember(s => s.DateWanted,
m => m.MapFrom(q => !String.IsNullOrWhiteSpace(q.DateWanted)
? DateTime.ParseExact(q.DateWanted, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture)
: default(DateTime?)));
一段时间以来一直没有问题,但突然之间我收到了一个错误
AutoMapper.AutoMapperMappingException:映射类型:字符串 - &gt; Nullable1 System.String - &gt; System.Nullable1 [System.DateTime的, mscorlib,版本= 4.0.0.0,文化=中性, PublicKeyToken = b77a5c561934e089]]目的地路径: JobResponse.DateWanted.DateWanted来源价值:20150916 ---&gt; System.FormatException:20150916不是DateTime的有效值。 ---&GT; System.FormatException:String未被识别为有效的DateTime。
格式正确yyyyMMdd源值是20150916.它让我大吃一惊,我无法弄清楚为什么会出现这个错误。一旦发生第一个错误,服务的所有后续事务也会中断,直到服务器上的应用程序池重置为止。重置应用程序池后,即使对于说它已损坏的事务,一切都正常工作。我不知道它是否是DateTime.PraseExact或Automapper的错误任何帮助都会很好,因为我失去了我的记住它。
经过更多调查后发现服务器上的内存使用率很高,而且在问题发生之前的服务器上CPU使用率很高。另一件事是应用程序池在发生错误的同时重启了它...这是巧合吗?应用程序池重置本身是否会导致这些类型的错误?