binding="customBinding"
<bindings>
<customBinding>
<binding name ="PicReciever" maxBufferSize="104857600" maxReceivedMessageSize="104857600" receiveTimeout="00:10:00">
<httpTransport maxBufferPoolSize="104857600" maxBufferSize="104857600" maxReceivedMessageSize="104857600"/>
</binding>
</customBinding>
</bindings>
Почему не стандартный WebHttpBinding или BasicHttpBinding?
<httpRuntime maxRequestLength="104857600"/>
Сюда ещё можно добавить атрибут executionTimeout в секундах. Это время, которое IIS ждёт окончания обработки. Я не знаю, сколько длится обработка, так что не уверен, что это поможет.
Непонятно, каков интерфейс, и как передаётся файл. Строкой, массивом байтов? При сериализации объектов в XML происходит кодирование. Для больших объёмов байтовых данных MS рекомендует использовать MTOM (Message Transmission Optimization Mechanism). Чтобы его включить, в элемент
<binding name ="PicReciever" maxBufferSize="104857600" maxReceivedMessageSize="104857600" receiveTimeout="00:10:00">
надо добавить атрибут messageEncoding="Mtom". Это даёт экономию трафика примерно на 30% для мегабайта. Или вообще Binary. Но я думаю, что это тоже не то.
В целом у WCF есть два режима работы: с использованием внутренних буферов (когда последовательно данные сначала сериализуются в буфер, а потом передаются) и потоковый (когда данные проходят все этапы обработки как на конвейере и голова данных начинает передаваться в то время, как хвост ещё не прошёл до конца сериализацию). Для включения потокового режима в конфигурации должно быть нечто вроде:
<system.serviceModel>
…
<bindings>
<basicHttpBinding>
<binding name="ExampleBinding" transferMode="Streaming"/>
</basicHttpBinding>
</bindings>
…
<system.serviceModel>
Но этот режим передачи, если верить MSDN, работает только с WebHttpBinding или BasicHttpBinding (ну ещё для NetTcpBinding и NetNamedPipeBinding, но это тебе для веб-сервиса не подойдёт). И при этом функции в интерфейсе должны получать в аргументах и возвращать в результатах не массивы байтов или строки, а объекты типа Stream.