исключение памяти при использовании wcf wshttpbinding - PullRequest
0 голосов
/ 30 мая 2011

У меня есть приложение для загрузки файлов на сервер.Я использую nettcpbinding и wshttpbinding.Когда файлы больше, чем 200 МБ, я получаю исключение памяти.Обходя это, я видел, как люди рекомендуют потоковую передачу, и, конечно, она работает с nettcpbinding для больших файлов (> 1 ГБ), но при использовании wshttpbinding какой подход будет ??Должен ли я перейти на basichttpbinding?какие??Спасибо.

Ответы [ 2 ]

1 голос
/ 31 мая 2011

Я предлагаю вам предоставить другую конечную точку просто для загрузки данных такого большого размера.Это может иметь привязку, которая поддерживает потоковую передачу.В нашем предыдущем проекте нам нужно было загружать файлы на сервер как часть бизнес-процесса.В итоге мы создали 2 конечные точки, одна из которых предназначена только для загрузки файлов, а другая - для всех других бизнес-функций.
Служба потоковой передачи данных может быть универсальной службой для потоковой передачи любых данных на сервер и, возможно, вернуть токен для идентификации данных на сервере.сервер. Для последующих запросов этот токен может быть передан для манипулирования данными на сервере.

0 голосов
/ 30 мая 2011

Если вы не хотите (или не можете по законным причинам) изменить привязку или использовать потоковую передачу, вы можете использовать какой-нибудь метод с подписью в следующем формате:

void UploadFile(string fileName, long offset, byte[] data)

Вместо того, чтобы отправлять весь файл, вы отправляете небольшие пакеты и сообщаете, куда следует поместить данные. Конечно, вы можете добавить больше данных, например, размер файла, CRC файла, чтобы узнать, была ли передача успешной, и т. Д.

...