Что вызвало InvalidOperationException с использованием LINQ для SQL?

Неделю или две назад мы столкнулись с рядом ошибок в нашем live-приложении, которые до сих пор ускользали из-под объяснения. Мы видели эти ошибки своими глазами, и они были также испытаны клиентами, как это проявилось в наборе веб-сервисов.

Я включил внутреннее исключение, приведенное ниже, проект использует CSLA-фреймворк, и ошибка произошла при получении объекта из базы данных.

В то время, когда мы начали испытывать ошибки, в систему не было внесено известных изменений, инфраструктура состоит из ряда веб-серверов балансировки нагрузки.

Ошибки казались изолированными от одного из наших серверов, мы испытали их на себе, используя консольное приложение, подключающееся к веб-сервисам. Сервер, о котором идет речь, использовал локальный DMZ IP для разрешения веб-служб в своем файле hosts, и, заставляя его идти внешне, казалось, решали проблемы.

Похоже, что это очень тонкая грань между приложением и инфраструктурой, чтобы изолировать это, так что Мне интересно, есть ли у кого-нибудь идеи или теории, которые могли бы объяснить это ?


      System.InvalidOperationException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
      Exception of type 'System.InvalidOperationException' was thrown.
      mscorlib
      
      System.Collections.ListDictionaryInternal
      Void VerifyIntegrity()
         at System.Runtime.CompilerServices.ConditionalWeakTable`2.VerifyIntegrity()
   at System.Runtime.CompilerServices.ConditionalWeakTable`2.Add(TKey key, TValue value)
   at System.Linq.Expressions.Expression..ctor(ExpressionType nodeType, Type type)
   at System.Data.Linq.SqlClient.Translator.TranslateLink(SqlLink link, List`1 keyExpressions, Boolean asExpression)
   at System.Data.Linq.SqlClient.SqlBinder.Visitor.ConvertToFetchedExpression(SqlNode node)
   at System.Data.Linq.SqlClient.SqlBinder.Visitor.ConvertLinks(SqlExpression node)
   at System.Data.Linq.SqlClient.SqlBinder.Visitor.FetchExpression(SqlExpression expr)
   at System.Data.Linq.SqlClient.SqlBinder.Visitor.VisitMember(SqlMember m)
   at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
   at System.Data.Linq.SqlClient.SqlBinder.Visitor.VisitExpression(SqlExpression expr)
   at System.Data.Linq.SqlClient.SqlBinder.Visitor.VisitNew(SqlNew sox)
   at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
   at System.Data.Linq.SqlClient.SqlBinder.Visitor.VisitExpression(SqlExpression expr)
   at System.Data.Linq.SqlClient.SqlBinder.Visitor.VisitSelect(SqlSelect select)
   at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
   at System.Data.Linq.SqlClient.SqlBinder.Visitor.VisitAlias(SqlAlias a)
   at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
   at System.Data.Linq.SqlClient.SqlVisitor.VisitSource(SqlSource source)
   at System.Data.Linq.SqlClient.SqlBinder.Visitor.VisitSelect(SqlSelect select)
   at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
   at System.Data.Linq.SqlClient.SqlBinder.Visitor.VisitIncludeScope(SqlIncludeScope scope)
   at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
   at System.Data.Linq.SqlClient.SqlBinder.Bind(SqlNode node)
   at System.Data.Linq.SqlClient.SqlProvider.BuildQuery(ResultShape resultShape, Type resultType, SqlNode node, ReadOnlyCollection`1 parentParameters, SqlNodeAnnotations annotations)
   at System.Data.Linq.SqlClient.SqlProvider.BuildQuery(Expression query, SqlNodeAnnotations annotations)
   at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
   at System.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute[S](Expression expression)
   at System.Linq.Queryable.SingleOrDefault[TSource](IQueryable`1 source)
   at NamespaceA.DaSql.NamespaceB.NamespaceBContext.NamespaceA.Da.NamespaceB.INamespaceBContext.GetClassA(Int32 objectId)
   at NamespaceA.NamespaceB.ClassA.DataPortal_Fetch(SingleCriteria`2 criteria)
   at dm(Object , Object[] )
   at Csla.Reflection.MethodCaller.CallMethod(Object obj, DynamicMethodHandle methodHandle, Object[] parameters)
    

Заранее спасибо за любую помощь или теории.

Правка :

Полное исключение это здесь

LINQ к SQL ниже, ничего к нему и ObjectA это просто класс-обертка со свойствами. Не более чем простое выделение и заполнение одного объекта на основе ID. ctx - это CSLA ContextManager.

var data = from d in ctx.DataContext.ObjectAs
                           where d.ObjectId == objectId
                           select new ObjectA
                            {
                                Id = d.DispatchId,
                                ClientId = d.ClientId,
                                DateCreated = d.DateCreated
                            };

                return data.SingleOrDefault();

6
задан John Saunders 8 October 2011 в 17:39
поделиться