WCF - Как увеличить квоту на размер сообщения

Я изучал это некоторое время назад, потому что я хотел создать пользовательскую кнопку, которая откроет диалоговое окно файла и сразу начнет загрузку. Я просто заметил что-то, что могло бы сделать это возможным - firefox, кажется, открывает диалог, когда вы нажимаете в любом месте загрузки. Таким образом, это может сделать следующее:

  1. Создать загрузку файла и отдельный элемент, содержащий изображение, которое вы хотите использовать в качестве кнопки
  2. . Расположите их для перекрытия и выполните файловый элемент backgroud и border прозрачный, чтобы кнопка была единственной видимой
  3. Добавьте javascript, чтобы IE открыл диалог при нажатии кнопки / файла
  4. Используйте событие onchange для отправьте форму, когда выбран файл

Это теоретически, поскольку я уже использовал другой метод для решения проблемы, но это может сработать.

440
задан marc_s 19 June 2014 в 04:36
поделиться

2 ответа

Для увеличения квот на размер сообщений вам понадобится что-то подобное в файле App.config или Web.config :

<bindings>
    <basicHttpBinding>
        <binding name="basicHttp" allowCookies="true"
                 maxReceivedMessageSize="20000000" 
                 maxBufferSize="20000000"
                 maxBufferPoolSize="20000000">
            <readerQuotas maxDepth="32" 
                 maxArrayLength="200000000"
                 maxStringContentLength="200000000"/>
        </binding>
    </basicHttpBinding>
</bindings>

И используйте имя привязки в вашей конфигурации конечной точки, например

...
bindingConfiguration="basicHttp"
...

. Обоснование значений простое, они достаточно велики, чтобы вместить большинство сообщений. Вы можете настроить это число в соответствии со своими потребностями. Низкое значение по умолчанию в основном используется для предотвращения атак типа DOS. Если установить значение 20000000, то распределенная атака DOS будет эффективной, размер по умолчанию в 64К потребует очень большого количества клиентов, чтобы подавить большинство серверов в наши дни.

591
ответ дан 22 November 2019 в 23:07
поделиться

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

Чтобы исправить проблему:

  1. Щелкните правой кнопкой мыши узел Файл конфигурации в нижней части дерева.
  2. Выберите Изменить с помощью SvcConfigEditor

Появится список редактируемых настроек, включая MaxBufferSize.

Примечание. Автоматически созданные клиенты прокси также устанавливают для MaxBufferSize значение 65536 по умолчанию.

148
ответ дан 22 November 2019 в 23:07
поделиться
Другие вопросы по тегам:

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