2009-07-16 23 views
5

XMLレスポンスを返す既存のWebサービスがあり、JSONを返す新しいメソッドを追加したいと思います。 JSONで返される個別のWebサービスを作成する必要がありますか、または混在することはできますか?.NET 3.5 WCF Webサービス(REST)からJSONとXML形式を返す

ResponseFormat = WebMessageFormat.JSONを使用する場合、私はサービスに[DataContractFormat]と注釈を付ける必要がありますが、それとxml型応答形式に必要な[XmlSerializerFormat]があるようです。

答えて

3

これはなぜできないのですか。 [ServiceContract]属性(DataContractFormatではなく)でサービスに注釈を付けます。それはのようになります

[ServiceContract] 
    public interface IDoStuff 
    { 
     [OperationContract] 
     [WebInvoke(Method = "POST", 
      UriTemplate = "DoStuff", 
      ResponseFormat = WebMessageFormat.Json, 
      RequestFormat = WebMessageFormat.Json)] 
     TestObj DoWork(TestInputObj Inp); 
    } 

これを行うには、単にresponseformatを変更します。ポストコマンドを実行するとjsonが得られます。xml形式の別のメソッドはxmlを提供します。

1

XmlSerializerFormatが必要であることはご存じですか?これは、Data Contract Serializerの規則に準拠していないXMLにシリアル化する必要がある場合にのみ必要です。

これが必要な場合は、2番目のサービスが必要です。それはかなり簡単です。共通の操作の要点を別々のメソッドに抽出し、それらのメソッドを両方のサービスから呼び出すだけです。

0

私はあなたがxmlタイプとしてpasteのXMLSerilization属性に頼っていると思います。もしそうなら、あなたのjsonデータには影響しません。それを使ってXML & Jsonの両方をセリ化することができます。 response.Content.ReadAsJsonDataContract()/ ReadAsXmlDataContract()ここで、TはXMLSerilizable型です。

関連する問題