2011-06-23 9 views
0

クライアントからサーバーにファイルをアップロードしています...サーバープログラムがストリームを受信するとプロパティの長さはサポートされず、CanSeekはfalseになります。私はクライアントでそれを読んだら、長さを得ることができ、メッセージ契約のメッセージヘッダーとして送信するが、シークの方法を知らない。アイデア??ファイルのアップロードを再開してストリームを検索する

答えて

1

WCFは、ファイル転送のための技術ではない、ここで説明されています。さらに、分散アプリケーションでのシークのアイデアはナンセンスであるため、内部で使用されるStreamFormatterではシークがサポートされていません。この作業を正しく行うために、内部ストリームは、転送されていないデータに対しては制御フローを持つネットワークプロトコルでなければなりません。内部的にストリームはバイトの配列に過ぎません。つまり、WCFがシークをサポートしていても、シークの前にすべてのデータを転送する必要があります。

レジューム機能が必要な場合は、データのチャンクを手動で作成してアップロードし、サーバー上のファイルに追加することで、自分で機能を実装する必要があります。サーバーは、最後に正しく受信したチャンクを制御し、既に受け継がれたチャンクを拒否します。 MSDN has sample implementationこれをカスタムチャンネルとして使用します。

関連する問題