Если вы хотите загружать большие файлы, вам обязательно нужно заглянуть в Режим потоковой передачи WCF .
Как правило, вы можете изменить режим переноса на вашей привязке; по умолчанию оно буферизуется, т. е. все сообщение должно буферизироваться в отправителе, сериализироваться, а затем передаваться целиком.
С помощью Streaming вы можете определить либо одностороннюю потоковую передачу (только для загрузки, только для загрузки), либо двустороннюю потоковую передачу. Это делается путем установки TransferMode вашей привязки в StreamedRequest
, StreamedResponse
или просто в Streamed
.
<bindings>
<basicHttpBinding>
<binding name="HttpStreaming"
maxReceivedMessageSize="2000000"
transferMode="StreamedRequest"/>
</basicHttpBinding>
</bindings>
Тогда вам нужно иметь контракт на обслуживание, который либо получает параметр типа Stream
(для загрузки), либо возвращает значение типа Stream
(для загрузки).
[ServiceContract]
public interface IFileUpload
{
[OperationContract]
bool UploadFile(Stream stream);
}
Это должно сделать это!