我想在执行数据读取器时使用WCF流式传输数据

时间:2013-02-28 00:44:49

标签: wcf ado.net

我不想阅读整个内容,而是将其放在文件中而不是流式传输。我想我可以使用WCF和流媒体以某种方式将datareader流式传输到客户端吗?

1 个答案:

答案 0 :(得分:0)

您可以使用MessageContracts实现此目的。

当我第一次尝试自己解决这个问题时,我偶然发现了这篇文章,它真的有很多帮助:http://www.codeproject.com/Articles/166763/WCF-Streaming-Upload-Download-Files-Over-HTTP

以下是设置合同的一个非常基本的示例:

[MessageContract]
public class MyFileInfo : IDisposable
{

    [MessageHeader(MustUnderstand = true)]
    public string FileName;

    [MessageHeader(MustUnderstand = true)]
    public long Length;

    [MessageHeader]
    public string FileHash;

    [MessageHeader]
    public string Status;


    [MessageBodyMember]
    public Stream FileData;

    public void Dispose()
    {
        if (FileData != null)
        {
            FileData.Close();
            FileData = null;
        }
    }
}

[MessageContract]
public class FileRequest
{
    [MessageHeader]
    public string fileName;

}

当我第一次学习WCF时,我讨厌默认的应用程序配置文件是多么冗长,所以在一些谷歌搜索/研究后,我写了一篇关于如何在没有庞大的应用程序配置文件的情况下设置WCF客户端代理的代码示例的博客文章: http://justindonohoo.blogspot.com/2012/08/generic-wcf-client-library-code.html