Веб-служба ASMX, которая возвращает изображение - PullRequest
0 голосов
/ 28 декабря 2010

Мне нужен сервис .asmx, который возвращает файл .png. Моя проблема в том, что мое веб-приложение размещено на GoDaddy. Из-за этого я не могу редактировать файл web.config. Если бы я мог редактировать файл web.config, я бы просто создал обработчик HTTP.

Мой вопрос: есть ли способ получить .asmx, который возвращает изображение? Если да, то как?

Ответы [ 4 ]

2 голосов
/ 29 декабря 2010

Это действительно зависит от того, как вы хотите использовать изображение. Если вы решили вернуть байтовый массив, как предлагает Джон, то для его сериализации потребуется огромное количество времени для сериализации в xml (или json), что-то вроде 13-15 раз (для xml).

Я бы посоветовал вам создать универсальный обработчик (.ashx) со строкой запроса arg, ссылающейся на изображение, и записывать непосредственно в поток ответов.

Затем в вашем веб-сервисе вместо изображения верните URL-адрес обработчику с правильной строкой запроса. Потребитель услуги может быть ответственным за получение изображения.

Надеюсь, это поможет.

2 голосов
/ 29 декабря 2010

Почему бы просто не заставить службу вернуть изображение в виде байтового массива (byte[]).

Понятия не имею, почему вы думаете, что вам следует отредактировать файл web.config.

0 голосов
/ 29 декабря 2010

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

0 голосов
/ 29 декабря 2010

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

Когда вы говорите, что хотите вернуть изображение, что именно вы ожидаете? Ожидаете ли вы, что изображение будет отображаться в веб-браузере по ссылке? Если это так, вам придется вручную манипулировать выводом. В Интернете есть множество учебных пособий по «отображению изображения из базы данных в asp .net», которые помогут вам.

По сути, вы бы взломали ответ и изменили его заголовки, записали данные двоичного изображения и завершили ответ. Он работает достаточно хорошо на веб-странице, но я никогда не пробовал его на веб-сервисе. Однако для веб-службы это будет считаться плохой формой для этого. Это нарушит «контракт» веб-сервиса. (Именно поэтому я надеюсь и, по крайней мере, предполагаю, что это не желаемый эффект.)

...