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



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

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

在Service.svc.cs文件中,它具有以下功能(显然StreamUtility作为参考和usings中包含):

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服务流式传输数据(即使不是通过上述方法),我将不胜感激。非常感谢。

如果只想使用GET和POST可能会有所帮助:

开发RESTful WCF服务的CodeProject(这是我个人采取的方式)

您可以使用这里描述的WebHttpBinding,还提供PUT和DELETE:

带有JSON 的WCF REST服务

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

MS Social on streaming WCF REST

相关内容

  • 没有找到相关文章

最新更新