【问题标题】:WCF Chunking / StreamingWCF 分块/流式传输
【发布时间】:2010-09-24 07:51:31
【问题描述】:

我正在使用 WCF 并希望将一个大文件从客户端上传到服务器。我已经调查并决定遵循http://msdn.microsoft.com/en-us/library/aa717050.aspx

中概述的分块方法

但是,这种方法(就像流式传输一样)将合约限制为有限的方法签名:

[OperationContract(IsOneWay=true)]
[ChunkingBehavior(ChunkingAppliesTo.InMessage)]
void UploadStream(Stream stream);

该示例使用了一个相当方便的示例,即从固定路径上传文件并将其保存到服务器上的固定路径。因此,我的问题是如何传递附加参数来指定文件名、文件路径等内容。

例如。我想要类似的东西:

[OperationContract(IsOneWay=true)]
[ChunkingBehavior(ChunkingAppliesTo.InMessage)]
void UploadStream(Stream stream, String filePath);

提前致谢, 标记。

【问题讨论】:

    标签: wcf streaming uploading chunking


    【解决方案1】:

    您可以使您的服务具有会话性,并在合同中设置一个初始化方法,并将 IsInitiating 属性设置为 true。比如:

    [OperationContract(IsInitiating = true)]
    void InitializeUploadService(string filename);
    
    [OperationContract(IsOneWay = true, IsInitiating = false)]
    [ChunkingBehavior(ChunkingAppliesTo.InMessage)]
    void UploadStream(Stream stream);
    

    我从未尝试过使用流服务,但它基本上应该让 WCF 强制在 UploadStream 之前始终调用 InitializeUploadService。

    更多文档可以在这里找到: http://msdn.microsoft.com/en-us/library/system.servicemodel.description.operationdescription.isinitiating.aspx

    【讨论】:

      【解决方案2】:

      This article 解释了如何使用 MessageHeader 属性来强制在标头中传递内容,因此不计为参数。因此,与其传递流和其他元数据,不如创建一个具有 MessageContract 属性的类,并将所有元数据标记为 MessageHeader。然后,将流标记为 MessageBodyMember(文章错误地称为“MessageBody”)。让您的 UploadStream 方法采用一个参数,该参数的类型是您刚刚创建的 MessageContract 类的类型。我已经成功地做到了这一点,但我还没有与分块一起做到这一点。祝你好运。

      【讨论】:

        【解决方案3】:

        在客户端和服务器端设置 maxItemsInObjectGraph 对我有用。

        (别忘了客户端。)http://social.msdn.microsoft.com/Forums/en/wcf/thread/0af69654-2d89-44f3-857a-583b57844ca5

        【讨论】:

          【解决方案4】:

          我会查看MessageContracts 并将这些值作为消息头添加到您的对象中。这应该允许您将流和与流相关的任何值作为消息头传递。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-06-30
            • 2011-05-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多