Потоковая передача больших файлов в веб-службу

У нас есть веб-служба (asmx), которая берет буфер массива байтов и передает его во внешнюю файловую службу. для хранения и архивирования. Он вызывается службой Windows, которая генерирует довольно маленькие файлы (3-5M), поэтому создание массива байтов такого размера и передача его в качестве параметра вызову веб-службы до сих пор хорошо работали.

Мне было поручено добавить новое задание в очередь файлов, которое потенциально может создавать файлы размером более 70 МБ. Очевидно, что byte[]такого размера переполнит системную память, поэтому я искал решения. У веб-службы есть внутренний метод, который принимает FileStreamв качестве параметра вместо byte[], поэтому я попытался использовать метод FileStream как WebMethod. Я обновил ссылки в службе Windows, но происходит странная вещь:К параметру FileStream прикреплен спецификатор пространства имен (что-то вроде CallingWindowsService.ExternalWebServiceFileManager.FileStream), и этот указанный объект не принимает имя файла в качестве конструктора, поэтому я могу не открывает определенный файл.

Я совершенно не знаю, как к этому подступиться. Кто-нибудь еще делал это -для потоковой передачи больших объемов данных в веб-службу -, и если да, то каков наилучший метод? Моему веб-сервису понадобится byte[]или FileStream.

Просматривая некоторые другие сообщения, похоже, что MTOM (не знаком с ним)может быть решением, но я не уверен, как настроить его в своих веб-методах или заставить его работать.

6
задан Kirsty White 12 April 2012 в 04:05
поделиться