2011-02-07 46 views
4

System.Web.Services.Protocols.SoapException:サーバーが要求を処理できませんでした。 ---> System.InvalidOperationException:XMLドキュメントの生成中にエラーが発生しました。 ---> System.InvalidOperationException:型ProfileChulbulが期待されていませんでした。静的に知られていない型を指定するには、XmlIncludeまたはSoapInclude属性を使用します。 Microsoft.Xml.Serialization.GeneratedWriterProfileDefinitionExportHolder.Write1_Object(String n、String ns、Object o、Boolean isNullable、Boolean isNullable、System.Xml.Serialization.XmlSerializationWriterProfileDefinitionExportHolder.Write1_Object)で を使用している場合、あなたは「ProfileChulbul」のオブジェクトで表示された場合はブールneedType)XMLをオブジェクトにシリアル化しようとするとエラーが発生します

、私はなぜこれほど

任意のアイデアをシリアル化しようとしていますか?

スタックトレース「静的に知られていないタイプを指定するには、XmlIncludeまたはSoapInclude属性を使用する」の一部に基づいて、ありがとう

+0

もう少し情報? – Fredou

+0

いくつかのコードを投稿してください – BrokenGlass

+0

BreakHead、質問はまだ信じられないほどあいまいです。シリアライズしようとしているクラスのコードを投稿してください。 –

答えて

17

これは、シリアライズするタイプが、シリアライザインスタンスに静的に知られていないタイプのプロパティを持つ場合に発生します。たとえば、タイプProfileChulbulに基本タイプがある場合、これはシリアライズしているものから参照される方法であるため、シリアライザはその処理方法を知りません。

あなたがこの問題を解決するためのカップルのオプションがあります。

  • は、(使用される任意の他のタイプのために、追加の属性)[XmlInclude(typeof(ProfileChulbul))]属性を追加しますProfileChulbulの基底クラスへ

  • 修正オブジェクトの代わりにジェネリックを使用するために使用するクラス

  • typeof(ProfileChulbul)(および使用される他のタイプ)をシリアライザに渡すnstructor実行時に、そのような:

    var knownTypes = new Type[] { typeof(ProfileChulbul), typeof(ProfileSomethingElse) };

    var serializer = new XmlSerializer(typeof(TheSerializableType), knownTypes);

+1

Thanx Daniel、Stack Overflow rocks :) – BreakHead

+0

ありがとう! – Jemes

1

、私はあなたがインターフェイスまたはインターフェイスのコレクションをシリアル化しようとしている賭けるでしょうか? Xmlシリアル化ではこれが許可されていないので、XmlInclude属性のインターフェイスにマークを付けてみてください。

+0

それでは、私がシリアル化しようとしているオブジェクトは汎用オブジェクトなので、これをどうすればいいですか? – BreakHead

+1

BreakHead、それがまさにエラーの原因です。普通の古いオブジェクトの代わりにジェネリックを使用できますか? –

+0

+1私は同じ経験を持っていました:-(今、私はxml-(de-)シリアル化を扱うことができる[sharpserializer](http://www.sharpserializer.com/en/index.html)を使用しています – k3b

関連する問題