.NET 4、WPF、WCF、EF 4、SQL2008アプリケーションがあります。私たちのEFモデルの1つは非常にリレーショナルであり、私が説明している場合、サイクルが含まれている可能性があります。このSTEEFモデルからの突然のデータがすべてWPFクライアントに表示されなくなった場合のトラブルシューティングを依頼されました。よく調べてみると、STE EFオブジェクトグラフを取得(シリアル化)しようとすると、IISW3WPプロセスがクラッシュすることがわかりました。デバッグ診断を使用してクラッシュをキャプチャしました。
生成されたクラッシュレポートを見ると、それがスタックオーバーフローの例外であることがわかりました(適切かどうか)。クラッシュレポートのスタックトレースはかなり大きいですが、スタックの一番上は次のようになります。
System.Xml.XmlBaseWriter.StartElement(System.String ByRef, System.String, System.String, System.Xml.XmlDictionaryString)
System.Xml.XmlBaseWriter.WriteStartElement(System.String, System.Xml.XmlDictionaryString, System.Xml.XmlDictionaryString)
System.Runtime.Serialization.XmlWriterDelegator.WriteStartElement(System.String, System.Xml.XmlDictionaryString, System.Xml.XmlDictionaryString)
DynamicClass.WriteXXXDataToXml(System.Runtime.Serialization.XmlWriterDelegator, System.Object, System.Runtime.Serialization.XmlObjectSerializerWriteContext, System.Runtime.Serialization.ClassDataContract)
System.Runtime.Serialization.ClassDataContract.WriteXmlValue(System.Runtime.Serialization.XmlWriterDelegator, System.Object, System.Runtime.Serialization.XmlObjectSerializerWriteContext)
System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(System.Runtime.Serialization.DataContract, System.Runtime.Serialization.XmlWriterDelegator, System.Object, System.RuntimeTypeHandle)
System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator, System.Object, Boolean, Boolean, Int32, System.RuntimeTypeHandle)
System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference(System.Runtime.Serialization.XmlWriterDelegator, System.Object, Boolean, Boolean, Int32, System.RuntimeTypeHandle)
非常に奇妙なのは、WCFサービスがVisual Studioでホストされていて、開発環境から実行すると、シリアル化が完全に機能し、クライアントでデータを取得することです。
これはIIS設定で解決できますか?Visual Studioの開発IISで機能するのに、運用IISでは機能しないのはなぜですか?
この問題の原因や、シリアライザーがバーフィングをしている理由がわかりません。
STE EF4を使用したWCFシリアル化の別の手段を試す必要がありますか?
どんな入力でも大歓迎です。
ありがとう!