Подумайте о том, как обычные изображения обрабатываются на веб-странице - на имя файла ссылается разметка, и браузер отправляет серверу отдельный запрос на этот файл.
Здесь применяется тот же принцип, за исключением того, что вместо ссылки на файл статического изображения вы можете обратиться к обработчику ASP.NET, который обслуживает байты изображения:
<img src="/imagehandler.ashx" />
Суть обработчика будет выглядеть примерно так:
public class ImageHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.OutputStream.Write(imageData, 0, imageData.Length);
context.Response.ContentType = "image/JPEG";
}
}
Вот (длинный) ресурс, который охватывает концепции создания HttpHander в ASP.NET.
Кроме того, как указывает Джоэл, подумайте, откуда байт-массив поступает, поскольку HttpHandler обслуживается в совершенно другом запросе, чем страница. На самом базовом уровне два запроса не знают друг о друге или не делятся какими-либо данными.
Распространенным решением этой проблемы является помещение данных изображения в кэш:
Guid id = Guid.NewGuid();
HttpRuntime.Cache.Add(id.ToString(), imageData);
И передать ключ HttpHandler в строке запроса, чтобы он мог извлечь его из кэша:
<img src="/imagehandler.ashx?img=<%=id%>" />
<!-- will print ...ashx?img=42a96c06-c5dd-488c-906f-cf20663d0a43 -->