Вы должны проверить потоковую передачу, как уже отмечал Дмитрий.
Чтобы отправлять большие файлы в виде потока на ваш сервис, вам необходимо:
- создать метод службы, который принимает
Stream
в качестве входного параметра
- создать конфигурацию привязки (как на сервере, так и на клиенте), которая использует
transferMode=StreamedRequest
- создайте поток в вашем клиенте и отправьте его в сервисный метод
Итак, во-первых, вам нужен метод в контракте на обслуживание:
[ServiceContract]
interface IYourFileService
{
[OperationContract]
void UploadFile(Stream file)
}
Тогда вам нужна конфигурация привязки:
<bindings>
<basicHttpBinding>
<binding name="FileUploadConfig"
transferMode="StreamedRequest" />
</basicHttpBinding>
</bindings>
и конечная точка службы в вашей службе, использующая эту конфигурацию привязки:
<services>
<service name="FileUploadService">
<endpoint name="UploadEndpoint"
address="......."
binding="basicHttpBinding"
bindingConfiguration="FileUploadConfig"
contract="IYourFileService" />
</service>
</services>
и затем в вашем клиенте вам нужно открыть, например, поток файлов и отправьте его в метод service, не закрывая его.
Надеюсь, это поможет!
Марк