0

.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シリアル化の別の手段を試す必要がありますか?

どんな入力でも大歓迎です。

ありがとう!

4

1 に答える 1