【问题标题】:How to stream a string from a WCF REST service如何从 WCF REST 服务流式传输字符串
【发布时间】:2012-07-16 18:58:27
【问题描述】:

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

【问题讨论】:

  • 由于您要返回流,ResponseFormat = WebMessageFormat.Xml 不正确。尝试删除响应格式。
  • WebOperationContext 是来自 System.ServiceModel.Web 命名空间的辅助类。除此之外,我看不出您的代码有任何问题:我刚刚实现了类似的方法,它按预期工作

标签: c# wcf rest stream streaming


【解决方案1】:

如果你只想使用 GET 和 POST,下面的文章 可能会有所帮助:

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

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

WCF REST Service with JSON

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

MS Social on streaming WCF REST

【讨论】:

    猜你喜欢
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 2012-04-17
    相关资源
    最近更新 更多