2010-03-03 109 views
1

這是一段代碼片段。請告訴我這兩個代碼有什麼區別,以及哪些內容適合這些代碼片段。 「應用程序/ XML」 或 「普通/文本」WCF REST POST XML

[OperationContract] 
[WebInvoke(Method="POST", UriTemplate="DoSomething")] 
public XElement DoSomething(XElement body) { 
    ... 
    return new XElement("Result"); 
} 

[OperationContract] 
[WebInvoke(Method="POST", UriTemplate="DoSomething")] 
public string DoSomething(string body) { 
    ... 
    return "thanks"; 
} 
+0

請重新設置您的代碼段以便我們可以閱讀它。 – AxelEckenberger 2010-03-03 00:13:42

回答

0

這兩種方法都對格式的URI '{BASE_URI}/DoSomething的'(只是一個猜測)POST請求響應

  • 的第一個需要一些XML,而第二個需要一個字符串(在HTTP POST請求的主體中)。
  • 第一個發送回一些XML數據(),而第二個發送回一個字符串(「感謝」)

關於「內容 - 類型」設置:應用/ XML爲第一個和滑動/第二個文本。

1

WCF認爲默認情況下所有東西都是XML,所以兩個端點都會返回XML。第二個將返回

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">thanks</string> 

使用內容類型application/xml。如果你想向它發送一個字符串,你將不得不發送一個XML序列化的字符串。愚蠢是不是。

如果您確實想返回一個字符串,那麼請使用Stream作爲返回類型。或者在.Net 4中看看WCF。看起來他們使得返回其他類型變得更容易。