Ответ 1
Если вы хотите загружать большие файлы, вам обязательно нужно будет изучить Режим потоковой передачи 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);
}
Это должно сделать это!