0

在使用 150 个用户测试 WCF 服务时,我遇到了这个异常。

注意:我正在使用 MS 测试项目对 WCF 服务进行负载测试。对 100 个用户运行负载测试时,也不例外。

在 System.Collections.Generic.Dictionary 的 System.ThrowHelper.ThrowArgumentException(ExceptionResource 资源)2.Insert(TKey key, TValue value, Boolean add) at System.Linq.Dynamic.ClassFactory.GetDynamicClass(IEnumerable1 属性)在 System.Linq.Dynamic.ExpressionParser.ParseNew() 在 System.Linq.Dynamic.ExpressionParser.ParseIdentifier() 在 System.Linq.Dynamic 的 System.Linq.Dynamic.DynamicExpression.CreateClass(IEnumerable`1 属性)。 ExpressionParser.ParsePrimaryStart() 在 System.Linq.Dynamic.ExpressionParser.ParsePrimary() 在 System.Linq.Dynamic.ExpressionParser.ParseUnary() 在 System.Linq.Dynamic.ExpressionParser.ParseMultiplicative() 在 System.Linq.Dynamic.ExpressionParser。 ParseAdditive() 在 System.Linq.Dynamic.ExpressionParser.ParseComparison() 在 System.Linq.Dynamic.ExpressionParser.ParseLogicalAnd() 在 System.Linq.Dynamic.ExpressionParser.ParseLogicalOr() 在 System.Linq.Dynamic.ExpressionParser.ParseExpression( ) 在 System.Linq.Dynamic.ExpressionParser.Parse(Type resultType) 在 System.Linq.Dynamic。DynamicExpression.ParseLambda(ParameterExpression[] parameters, Type resultType, String expression, Object[] values) at System.Linq.Dynamic.DynamicExpression.ParseLambda(Type itType, Type resultType, String expression, Object[] values) 在 System.Linq。 Dynamic.DynamicQueryable.Select(IQueryable source, String selector, Object[] values) at CustomEntities.Data.Repository.CustomEntitiesDataRepository.GetCustomEntityData(CriteriaDto criteriaDto) 在 d:\Projects\SRM\Services\Data\CustomEntities\CustomEntities.Data.Repository \CustomEntitiesDataRepository.cs: d:\Projects\SRM\Services\Data\CustomEntities\CustomEntities.Data.Manager\CustomEntitiesDataManager.cs: 中 CustomEntities.Data.Manager.CustomEntitiesDataManager.GetCustomEntityData(CriteriaDto criteriaDto) 的第 131 行:第 69 行System.Linq.Dynamic.DynamicExpression.ParseLambda(Type itType, Type resultType, String expression, Object[] values) at System.Linq.Dynamic.DynamicQueryable.Select(IQueryable source, String selector, Object[] values) 在 CustomEntities.Data.Repository.CustomEntitiesDataRepository.GetCustomEntityData(CriteriaDto criteriaDto) 在 d:\Projects\SRM\Services\Data\CustomEntities\CustomEntities.Data.Repository\CustomEntitiesDataRepository.cs:CustomEntities.Data 的第 131 行。 Manager.CustomEntitiesDataManager.GetCustomEntityData(CriteriaDto criteriaDto) 在 d:\Projects\SRM\Services\Data\CustomEntities\CustomEntities.Data.Manager\CustomEntitiesDataManager.cs:line 69System.Linq.Dynamic.DynamicExpression.ParseLambda(Type itType, Type resultType, String expression, Object[] values) at System.Linq.Dynamic.DynamicQueryable.Select(IQueryable source, String selector, Object[] values) 在 CustomEntities.Data.Repository.CustomEntitiesDataRepository.GetCustomEntityData(CriteriaDto criteriaDto) 在 d:\Projects\SRM\Services\Data\CustomEntities\CustomEntities.Data.Repository\CustomEntitiesDataRepository.cs:CustomEntities.Data 的第 131 行。 Manager.CustomEntitiesDataManager.GetCustomEntityData(CriteriaDto criteriaDto) 在 d:\Projects\SRM\Services\Data\CustomEntities\CustomEntities.Data.Manager\CustomEntitiesDataManager.cs:line 69Object[] values) at System.Linq.Dynamic.DynamicQueryable.Select(IQueryable source, String selector, Object[] values) at CustomEntities.Data.Repository.CustomEntitiesDataRepository.GetCustomEntityData(CriteriaDto criteriaDto) 在 d:\Projects\SRM\Services \Data\CustomEntities\CustomEntities.Data.Repository\CustomEntitiesDataRepository.cs: d:\Projects\SRM\Services\Data\CustomEntities\CustomEntities.Data.Manager 中 CustomEntities.Data.Manager.CustomEntitiesDataManager.GetCustomEntityData(CriteriaDto criteriaDto) 的第 131 行\CustomEntitiesDataManager.cs:第 69 行Object[] values) at System.Linq.Dynamic.DynamicQueryable.Select(IQueryable source, String selector, Object[] values) at CustomEntities.Data.Repository.CustomEntitiesDataRepository.GetCustomEntityData(CriteriaDto criteriaDto) 在 d:\Projects\SRM\Services \Data\CustomEntities\CustomEntities.Data.Repository\CustomEntitiesDataRepository.cs: d:\Projects\SRM\Services\Data\CustomEntities\CustomEntities.Data.Manager 中 CustomEntities.Data.Manager.CustomEntitiesDataManager.GetCustomEntityData(CriteriaDto criteriaDto) 的第 131 行\CustomEntitiesDataManager.cs:第 69 行Repository\CustomEntitiesDataRepository.cs:第 131 行位于 CustomEntities.Data.Manager.CustomEntitiesDataManager.GetCustomEntityData(CriteriaDto criteriaDto) 在 d:\Projects\SRM\Services\Data\CustomEntities\CustomEntities.Data.Manager\CustomEntitiesDataManager.cs:line 69Repository\CustomEntitiesDataRepository.cs:第 131 行位于 CustomEntities.Data.Manager.CustomEntitiesDataManager.GetCustomEntityData(CriteriaDto criteriaDto) 在 d:\Projects\SRM\Services\Data\CustomEntities\CustomEntities.Data.Manager\CustomEntitiesDataManager.cs:line 69

4

2 回答 2

2

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

于 2013-02-15T16:56:43.930 回答
2

实际上,它看起来像存在并发问题.Select()。请参阅http://www.webr2.com/system-linq-dynamic-select-new-does-not-appear-to-be-thread-safe/

最简单的解决方法是在您的代码中围绕对 Select 的调用进行一些锁定

于 2015-11-03T15:10:33.517 回答