Как вернуть поток и длину файла из WCF Restful json webservice? - PullRequest
0 голосов
/ 26 сентября 2011

Привет всем,

Я могу вернуть поток из моего WCF restful json webservice, все работает нормально. Но когда я смешал поток с другим фрагментом данных (оба обернуты в пользовательский класс), при использовании веб-сервиса от моего клиента он выдает сообщение об ошибке «Существующее соединение было принудительно закрыто удаленным хостом».

Любой совет, как я могу достичь вышеизложенного? Для моего веб-сервиса требуется разрешить загрузку файла с длиной файла в качестве дополнительной информации для проверки на стороне клиента.

Заранее спасибо! :)

1 Ответ

2 голосов
/ 26 сентября 2011

Существуют различные ограничения при использовании Stream в сервисных контрактах WCF - согласно эта ссылка MDSN , только один (выходной) параметр или возвращаемое значение (типа stream) может использоваться при потоковой передаче.

В другой документации MSDN (в любом случае это хороший ресурс, если вы хотите передавать большие данные с помощью WCF), намекнули, что можно объединить поток и некоторые данные ввода / вывода с помощьюиспользуя Сообщение Контракт.Например, см. это сообщение в блоге , где автор использовал явный договор о сообщении для загрузки как имени файла, так и данных файла.Вы должны сделать то же самое с точки зрения загрузки.

Наконец, если ничего не работает, вы всегда можете выдвинуть длину файла в качестве настраиваемого (или стандартного, например, длины содержимого) HTTP-заголовка.Если вы размещаете хостинг в IIS, включите совместимость с ASP.NET и используйте HttpContext.Current.Response, чтобы добавить свой настраиваемый заголовок.

...