将流从基于WCF REST的服务返回到Silverlight应用程序

时间:2012-01-02 14:13:11

标签: c# wcf silverlight-3.0

我创建了以下方法契约,它从基于WCF REST的服务返回Stream

[OperationContract, WebGet(UriTemplate = "path/{id}")]
Stream Get(string id);

实现:

public Stream Get(string id)
{
    WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";

    return new MemoryStream(Encoding.UTF8.GetBytes("<myXml>some data</MyXml>"));
}

一个。如何使用WebRequest

访问此方法

因为这听起来像是一个简单的问题,我怀疑我可能正在咆哮错误的树......也许回归XmlElement是一种更好的方法。

B中。从基于WCF REST的服务返回原始XML的推荐方法是什么?

1 个答案:

答案 0 :(得分:1)

我将首先回答你的第二个问题

  

从基于WCF REST的服务返回原始XML的推荐方法是什么?

一般来说,没有推荐的方法。 RESTful API概念是从数据格式中抽象出来的。从基于HTTP的WCF服务返回Stream时,我会引用this MSDN article

  

因为该方法返回一个Stream,所以WCF假定该操作完全控制从服务操作返回的字节,并且它不对返回的数据应用任何格式。

要回答第一个问题,这里有一段可以调用您的实现的代码

var request = (HttpWebRequest)WebRequest.Create("location-of-your-endpoint/path/1");
request.Method = "GET";

using (var webResponse = (HttpWebResponse) request.GetResponse())
{
    var responseStream = webResponse.GetResponseStream();
    var theXmlString = new StreamReader(responseStream, Encoding.UTF8).ReadToEnd();

    // now you can parse 'theXmlString'
}