Предел размера параметра для строк [дубликат]

Это анонимная функция , которая является самоисключением . Обычно известный как Immediatly вызываемое выражение функции (IIFE).

14
задан esac 20 December 2009 в 07:29
поделиться

3 ответа

Если вы хотите загружать большие файлы, вам определенно нужно будет изучить режим потоковой передачи WCF .

В принципе, вы можете изменить режим передачи на свой привязку; по умолчанию он буферизуется, то есть все сообщение должно буферизироваться на отправителе, сериализоваться, а затем передаваться в целом.

При потоковой передаче вы можете определить одностороннюю передачу (только для загрузки, только для загрузки) или двунаправленной потоковой передачи. Это делается путем установки 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);
}

Это должно быть сделано!

16
ответ дан marc_s 22 August 2018 в 19:00
поделиться
  • 1
    Что делать, если ваш запрос / ответ должен следовать определенной схеме? Т.е., wat, если запрос должен быть конкретным объектом, и ваш wsdl должен отражать это? Как бы вы навязывали это потоку? – Jeremy 5 March 2013 в 22:35
  • 2
    @Jeremy: как мой ответ говорит: если вы хотите использовать потоковый перевод, вы можете использовать только один параметр типа Stream (или возвращаемое значение типа Stream). Если вы не можете создать свой сервис так и должны следовать другим конкретным требованиям, то, к сожалению, вы просто не можете использовать передачу потокового трафика. Нет способа magic сделать эту работу. – marc_s 5 March 2013 в 22:47
  • 3
    @marc_s как насчет одного большого параметра строки? Мой недавний вопрос был отмечен как дубликат этого, но я могу с установкой правильного параметра легко передать параметр 1.2gb byte[] в метод без проблем, но если вы измените тип параметра с byte[] на string, тогда он ограничивается примерно 28 мб. Я должен иметь string в качестве параметра. – Franck 14 February 2018 в 14:17

MTOM оптимизирован для обработки больших двоичных данных.

1
ответ дан Darin Dimitrov 22 August 2018 в 19:00
поделиться
  • 1
    Только MTOM не очень помогает - вам все равно нужно собрать все сообщение в буфере для передачи. – marc_s 20 December 2009 в 13:30

Вы можете использовать webHttpBinding с потоком передачи TransferMode и один поток или ответ потока (в зависимости от ситуации) для больших файлов вверх / загрузок, но вам придется отправлять любые метаданные запроса через URL-адреса и / или заголовки, если только вы не используете собираюсь придумать собственное обрамление в Поток. Вам придется создавать пользовательский клиент без HTML (например, Silverlight, Flash и т. Д.), Поскольку браузеры не поддерживают случайный доступ к локальным файлам, а обычная загрузка файлов будет отправкой формы, а не JSON.

0
ответ дан nitzmahone 22 August 2018 в 19:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: