2017-06-19 13 views
0

少し先に問題を説明しましょう。サービス契約にXmlSerializerFormatAttributeが設定されているWCFサービスからJSONを返す

私は、私たちのAPIを利用しなければならないXamarinアプリケーションで作業する必要があります。 APIは、2つのエンドポイント上のWCFサービスを介して公開されており、tcpまたはbasic httpのいずれかです。 Xamarinプラットフォームの限界のため、私はHttpWebClientを使用して終了しました.WCFサービスを安心して使用する必要がありました。これは問題が浮上し始めるところです。

"rest"という名前の別のエンドポイントを定義し、DefaultOutgoingResponseFormatという名前のプロパティを介してJSONを返すように設定しました。私はいつもXMLの形で応答を得るので、このプロパティは何の効果もありません。

私がXmlSerializerFormatAttributeを削除した場合、私のサービスはJSONを返しますが、今はXMLを持っていません。これは、デフォルトの戻り値がXMLになる別のエンドポイントを作成することで簡単に修正できますが、クラスの一部が正しくシリアル化されないため、今問題を説明します。

XmlIgnoreという属性がプロパティに配置されています。 Nameという名前のプロパティとNameSpecifiedという名前の別のプロパティがあり、NameSpecifiedプロパティのプロパティ値がfalseの場合、NameプロパティはNameSpecifiedに配置されます。送信されるXMLが無駄な情報で混雑しないため、これは非常に便利です。これを保持しておきたいのは、XmlSerializerFormatAttributeを保持したいだけでなく、JSONを返すことができるということです。

これは可能ですか?

答えて

0

XmlSerializerFormatを使用すると、DataContractSerializerよりもXmlSerializerクラスを使用するようにWCFに指示しています。 WCFには、XmlSerializerを使用するよう明示したので、JSONを返すようにするメカニズムは組み込まれていません。

XMLまたはJSONのコンテンツを返す場合は、独自のIDispatchMessageFormatter実装を作成してメッセージの書式設定を完全に行うことができます。それから、あなたが望むどんなルールででもメッセージを書式設定することは、あなた次第です。

+0

私はIDispatchMessageFormatterを見ましたが、実装するのは簡単なことではありません。例はまれであり、ショーンケースのためにJson tを使用しています。くそーWCF! – Rob

関連する問題