如何从WCF REST服务流式传输字符串

时间:2012-07-16 18:58:28

标签: c# wcf rest stream streaming

我在C#中编写了一个非常基本的WCF REST服务,它在服务接口中有以下内容:

[OperationContract]
[WebGet(UriTemplate = "/stream", ResponseFormat = WebMessageFormat.Xml)]
Stream streamTest();

在Service.svc.cs文件中它具有此功能(显然StreamUtility作为参考包含在使用中):

public Stream streamTest()
    {
        return StreamUtility.streamTest();
    }

最后,流功能本身看起来像这样:(它根据我在此处找到的源代码返回一个大的任意字符串作为内存流:http://www.codeproject.com/Articles/35982/REST-WCF-and-Streams-Getting-Rid-of-those-Names-Sp

public static Stream streamTest()
    {
        string result = "skdjdfnlsakdjfnasdlkjfnasdkjkfnasldkjfnasdlkjfnasdlkfjnasdldkfjnassdlfkjnadsdlfkjasndflkjsanflaskjdfnalskdkjnfalskfjnslidifubsaoicubuiewnfpoiowneflskjdfansdufawneifuenfgiwe";
        for (int i = 0; i < 5; i++)
        {
            result += result;
        }
        Encoding encoding = Encoding.GetEncoding("ISO-8859-1");
        byte[] returnBytes = encoding.GetBytes(result);
        return new MemoryStream(returnBytes);
    }

不幸的是,这个功能似乎无法正常工作,我无法辨别。当我通过我的浏览器调用该功能时,转到localhost:XXXXX / Service.svc / stream,它会显示一个加载图标,然后只是冻结。

我已经能够找到一些试图回答这个问题的网站,但是他们的代码都没有真正起作用。我找到上面代码的地方有一行不起作用:

WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain";

这一行有下划线,因为程序无法找到WebOperationContext引用,我不知道它位于何处,尽管已从站点下载源代码,该源代码仅包含两个C#文件且未实际运行。

如果有人能够确切地告诉我如何通过WCF中的REST服务流式传输数据(即使不是通过上述方法),那将非常感激。谢谢。

1 个答案:

答案 0 :(得分:0)

如果您只想使用GET和POST,请阅读以下文章 可能会有所帮助:

CodeProject on developing RESTful WCF services (这是我个人采取的方式)

您可以使用此处所述的WebHttpBinding, 提供PUT和DELETE也是:

WCF REST Service with JSON

这里有一个更简单的例子(也使用WebHttpBinding)

MS Social on streaming WCF REST