2010-03-03 98 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。看起来他们使得返回其他类型变得更容易。