2011-02-10 12 views
1

同じメソッドでJSONとXMLの両方を受け入れ、SOAPとRESTの両方をサポートするWCFサービスをセットアップしました。WCF REST要求と応答のXML形式

JSONはうまく動作しますが、XMLの外観はわかりません。

インターフェースは次のようになります。

<stringArray> 
    <string>hello</string> 
    <string>hola</string> 
</stringArray> 

応答はシンプルでなければなりません:可能な場合は

[ServiceContract] 
public interface IWebService 
{ 
    [OperationContract] 
    [WebInvoke(BodyStyle = WebMessageBodyStyle.Bare)] 
    string[] EchoArray(string[] stringArray); 
} 

、私はこのように、名前空間なしに、できるだけシンプルなXMLを維持したいと思います同じように。

もし何か違いがあれば、私はweb.configを使わずにコードですべてやっています。

これは私がAzureワーカーロールを使用できるようにするためです。あなたはXMLがどのように見えるかを制御したい場合は

答えて

1

それをフォーマットする方法。

まず私は、これは働いていた

[ServiceContract(Namespace = "")] 

[ServiceContract] 

を変更:

<EchoArray> 
    <stringArray xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
     <a:string>hello</a:string> 
     <a:string>hola</a:string> 
    </stringArray> 
</EchoArray> 

それはおそらく同様にラップされたリクエストせずに動作しますが、一貫性を保つために私が作りましたこのメソッドも同様にラップされます。

0

、あなたはこれを行うことができます:私は代わりに裸の(別の方法は、それを必要とするので)、と考え出しアウトのラップされたリクエストで行くことにしました

[ServiceContract] 
public interface IWebService 
{ 
    [OperationContract] 
    [WebInvoke(BodyStyle = WebMessageBodyStyle.Bare)] 
    StringArray EchoArray(StringArray stringArray); 
} 

public class StringArray : IXmlSerializable { 
     public XmlSchema GetSchema() { 
      return null; 
     } 

     public void ReadXml(XmlReader reader) { 
      // However you have formatted it 
     } 

     public void WriteXml(XmlWriter writer) { 
      // However you want it formatted 
     } 
} 
関連する問題