WCF:已添加具有相同密钥的项目

时间:2013-02-15 16:52:59

标签: wcf linq entity-framework-5

在测试150个用户的WCF服务时,我遇到了这个例外。

注意:我正在使用MS Test Project进行WCF服务的负载测试。当为100个用户运行负载测试时,没有例外。

System.Linq上的System.Linq.Dynamic.DynamicExpression.CreateClass(IEnumerable`1属性)处的System.ThrowHelper.ThrowArgumentException(ExceptionResource资源)处的System.ThrowHelper.ThrowArgumentException({1}}属性)处的

。在System.Linq.Dynamic的System.Linq.Dynamic.ExpressionParser.ParsePrimary()的System.Linq.Dynamic.ExpressionParser.ParsePrimaryStart()处的System.Linq.Dynamic.ExpressionParser.ParseIdentifier()处的Dynamic.ExpressionParser.ParseNew()。 System.Linq.Darse.Darse()处于System.Linq.Dynamic.Dynamic.Darse.Darse()的System.Linq.Dynamic.ExpressionParser.ParseAdditive()处的SystemParser.ParseUnary()位于System.Linq.Dynamic.ExpressionParser的System.Linq.Dynamic.ExpressionParser.ParseComparison()处。在System.Linq.Dynamic.Dynamic(表达式,类型为resultType)的System.Linq.Dynamic.ExpressionParser.ParseExpression()处的System.Linq.Dynamic.ExpressionParser.ParseLogicalOr()处的System.Linq.Dynamic.Dynamic()处于System.Linq.Dynamic.Dynamic。 ParseLambda System.Linq.Dynamic.DynamicQueryable上的System.Linq.Dynamic.DynamicExpression.ParseLambda(Type itType,Type resultType,String expression,Object [] values)中的(ParameterExpression []参数,类型resultType,String表达式,Object []值) 。在D:\ Projects \ SRM \ Services \ Data \ CustomEntities \ CustomEntities.Data.Repository \ CustomEntitiesDataRepository中的CustomEntities.Data.Repository.CustomEntitiesDataRepository.GetCustomEntityData(CriteriaDto criteriaDto)中选择(IQueryable source,String selector,Object [] values)。 cs:第131行,位于d:\ Projects \ SRM \ Services \ Data \ CustomEntities \ CustomEntities.Data.Manager \ CustomEntitiesDataManager.cs中的CustomEntities.Data.Manager.CustomEntitiesDataManager.GetCustomEntityData(CriteriaDto criteriaDto):第69行

2 个答案:

答案 0 :(得分:1)

如果您查看代码,请在第131行的CustomEntitiesDataRepository.cs中,此行触发此问题。您返回的自定义实体在某种程度上是尝试将值插入Dictionary<T,U>,但其使用的密钥已经存在。

答案 1 :(得分:1)

实际上,.Select()似乎存在并发问题。见http://www.webr2.com/system-linq-dynamic-select-new-does-not-appear-to-be-thread-safe/

最简单的解决方法是在调用Select

时对代码进行一些锁定
相关问题