1、2週間前にライブアプリケーションで多くのエラーが発生しましたが、これまでのところ説明を逃れています。これらのエラーは内部で確認され、一連のWebサービスで明らかになったときにクライアントにも発生しました。
以下に内部例外を含めました。プロジェクトはCSLAフレームワークを使用しており、データベースからオブジェクトを取得するときにエラーが発生しました。
エラーが発生し始めた時点では、システムに既知の変更は加えられていません。インフラストラクチャは、多数の負荷分散Webサーバーで構成されています。
エラーはサーバーの1つに限定されているようで、Webサービスに接続するコンソールアプリケーションを使用してエラーが発生しました。問題のサーバーは、ローカルDMZ IPを使用してhostsファイル内のWebサービスを解決していましたが、これを外部に強制することで、問題が解決したようです。
これを分離することは、アプリケーションとインフラストラクチャの間の非常に細かい線のように思われるので、これを説明できる可能性のあるアイデアや理論を誰かが持っているのではないかと思います。
<InnerException>
<ExceptionType>System.InvalidOperationException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType>
<Message>Exception of type 'System.InvalidOperationException' was thrown.</Message>
<Source>mscorlib</Source>
<HelpLink />
<Property name="Data">System.Collections.ListDictionaryInternal</Property>
<Property name="TargetSite">Void VerifyIntegrity()</Property>
<StackTrace> 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)</StackTrace>
</InnerException>
助けや理論を事前に感謝します。
編集 :
完全な例外はここにあります
以下のLINQtoSQLには何もありません。ObjectAは、プロパティを持つ単なるラッパークラスです。IDに基づいて1つのオブジェクトを選択して入力するだけです。ctxはCSLAContextManagerです。
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();