我正在尝试通过 WCF Rest 服务上传音频文件。我们有一个网络播放器,可以在录制时将数据逐块发送到服务器。我们必须上传大文件,所以在这里选择了 CHUNKED 选项。该服务的方法工作正常,当停止录制或定义的录制持续时间结束时,录制的文件保存在文件系统中。
但是,我注意到当启用 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.1chunked
传输编码,但它不起作用。