ユーザーごとに大きなファイルをアップロードするには、WCFサービスが必要です。
次のどれがより最適化されたパフォーマンスを提供します
[OperationContract]
public void UploadFile(Stream inputsreaam);
また
[OperationContract]
public void UploadFile(byte[] buffer);
他の提案は大歓迎です
非常に大きなファイルをアップロードする場合は、Streamファイルを使用してください。2 Gbファイルをbyte[]として転送すると、これはサーバー上のメモリにロードされ、どこかに保存できる場合に限ります。ストリームを使用すると、クライアントストリームから読み取り、サーバー上のファイルまたはDBストリームに書き込むことができ、実際にはメモリ内にデータの小さなチャンクのみが含まれます。パフォーマンスに戻る:非常に大きなファイルと複数のクライアントがある場合、byte[]はメモリ不足のためにサーバーをフリーズさせる可能性があります。
このチュートリアルも役立つ場合があります。
通常、最初の (Stream
パラメーター)。パラメーターを取得していてStream
、WebHttpBinding / WebHttpBehavior のエンドポイント (つまり、Web または REST エンドポイント) を使用している場合、Stream パラメーターはエンコードなしで要求本文全体にバインドされます。この場合、2 番目の ( byte[]
) を使用している場合、パラメーターは形式に応じて配列としてエンコードする必要があります (XML の場合、base64 としてエンコードされたバイト; JSON の場合、バイトを表す数値の実際の配列)。
ただし、Web エンドポイントを使用していない場合 (つまり、SOAP エンドポイントを使用している場合) は、Stream または byte[] パラメータがSOAP bodyにバインドされ、SOAP エンドポイントがメッセージはすでにエンコードされています。