我正在尝试通过WCF Rest服务上传音频文件。我们有一个网络播放器,可以在录制时通过块将数据发送到服务器。我们必须上传大文件,所以在这里选择了CHUNKED选项。该服务的方法工作正常,当STOP记录或定义的记录持续时间结束时,重新保存的文件保存在文件系统中。
但是,我注意到当启用CHUNKED时,方法不会被调用,直到文件被完全上传,这意味着WCF似乎在调用方法之前将文件缓存到某处。应该在接收第一个块之后立即调用服务方法而不是此行为,并且应该在文件系统中创建文件。我们还使用wireshark检查了结果,发现很多块数据包都在那里,但文件只在STOP后保存。
以下是服务配置:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<standardEndpoints >
<webHttpEndpoint >
<standardEndpoint
maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"
name="" helpEnabled="true" automaticFormatSelectionEnabled="true" transferMode="Streamed"/>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
我们也用过
appcmd set config /section:asp /enableChunkedEncoding:True|False
启用或禁用HTTP 1.1 chunked
传输编码,但它无效。