WCF Rest サービスを介してオーディオ ファイルをアップロードしようとしています。記録中にデータをチャンク単位でサーバーに送信できる Web プレーヤーがあります。大きなファイルをアップロードする必要があるため、ここでは 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.1 転送エンコーディングを有効または無効chunked
にしていましたが、機能しませんでした。