LINQからSharePointスローNULL参照例外
-
29-10-2019 - |
質問
SharePoint 2010プロジェクトでは、LINQを使用してSharePointを使用してConfigurationItemsのリストを取得しています。テスト環境では、このリストからデータを取得するのに問題がありませんでした。私たちの生産環境では、リスト内のアイテムをループする際に、現在(今のところパターンを見つけることができない)null参照例外を取得することがあります。
以下は、LINQからSharePointコードへとスローされている例外です。
Object reference not set to an instance of an object. StackTrace: at Microsoft.SharePoint.Linq.FieldRef.GetHashCode() at Microsoft.SharePoint.Linq.FieldRef.FieldRefEqualityComparer.GetHashCode(FieldRef obj) at System.Linq.Set`1.InternalGetHashCode(TElement value) at System.Linq.Set`1.Find(TElement value, Boolean add) at System.Linq.Enumerable.d__7a`1.MoveNext() at System.Linq.Buffer`1..ctor(IEnumerable`1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at Microsoft.SharePoint.Linq.SelectMappingInfo.GetDistinctMappedFields() at Microsoft.SharePoint.Linq.Rules.PushDownProcessor.SelectWithInfoOp.PushDownSelect(Context ctx) at Microsoft.SharePoint.Linq.Rules.PushDownProcessor.SelectWithInfoOp.Process(Context ctx) at Microsoft.SharePoint.Linq.Rules.GuardedRule`4.c__DisplayClass7.b__6(TSourceBase src, TContext ctx) at Microsoft.SharePoint.Linq.Rules.RewriteRule`2.Apply(TNode src, TContext ctx) at Microsoft.SharePoint.Linq.Rules.CacheRule`3.Apply(TSource src, TContext ctx) at Microsoft.SharePoint.Linq.Rules.PushDownProcessor.b__0(Expression e, Context ctx) at Microsoft.SharePoint.Linq.Rules.ChildRule`2.Apply(TNode src, TContext ctx) at Microsoft.SharePoint.Linq.Rules.PushDownProcessor.b__3(Expression e, Context ctx) at Microsoft.SharePoint.Linq.Rules.RewriteRule`2.Apply(TNode src, TContext ctx) at Microsoft.SharePoint.Linq.Rules.CacheRule`3.Apply(TSource src, TContext ctx) at Microsoft.SharePoint.Linq.SPLinqProvider.Rewrite(Expression expression, List`1& assumptions) at Microsoft.SharePoint.Linq.SPLinqProvider.RewriteAndCompile[T](Expression expression, List`1& assumptions) at Microsoft.SharePoint.Linq.LinqQuery`1.GetEnumerator() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at Common.Configuration.ConfigurationRepository.GetConfiguration(String siteUrl) InnerException: Source: Microsoft.SharePoint.Linq TargetSite: Int32 GetHashCode()
そして、ここでは、GetConfigurationメソッドで使用するコードです。
using (SpDataContext dataContext = new SpDataContext(siteUrl))
{
result = new ConfigurationModel()
{
Configurations = (from item in dataContext.GasportConfiguration
select new ConfigurationItem()
{
Key = item.Key,
Value = item.Value,
Environment = (Environment)Enum.Parse(typeof(Environment), item.Environment.ToString(), true)
}).ToList()
};
}
この例外を引き起こしているものまでこれを追跡する方法についてアイデアを持っている人はいますか?
更新31-05-2011:
この動作を生産環境で再現できるパターンを見つけました。また、テスト環境でもこの問題があり、そこからADPlusを使用していくつかのクラッシュダンプファイルを抽出しました。
アプリケーションプールがリサイクルされた後にこの動作が発生することがわかります。このエラーを修正する唯一の方法は、完全なiiSresetを実行することです。
CrashDump Analysisでは、例外コード:0xc0000005例外情報を記載する例外メッセージを見つけました。
誰かが私にこの例外に関するいくつかの情報を与えてくれることを願っていますか?
正しい解決策はありません
所属していません StackOverflow