Wrap la matriz de bytes en un objeto MemoryStream y colocarlo en ASP.NETs Cache.
MemoryStream ms = new MemoryStream(user.Picture.ToArray());
Guid imageGuid = new Guid();
HttpRuntime.Cache.Add(imageGuid.ToString(), ms, null,
DateTime.Now.AddMinutes(5), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
A continuación, utilice un controlador (.ashx) para extraerlo de la caché y enviarlo al cliente.
string imageGuid = context.Request.QueryString[image];
MemoryStream ms = (MemoryStream)HttpRuntime.Cache[imageGuid];
// configure context.Response with appropriate content type and cache settings
// ** Edit **
// It seems I need to be more explicit with regard to the above comment:-
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetLastModified(DateTime.UtcNow);
context.Response.Cache.SetExpires(DateTime.UtcNow.AddHours(2);
context.Response.Cache.SetMaxAge(TimeSpan.FromHours(2));
context.Response.Cache.SetValidUntilExpires(true);
ms.WriteTo(context.Response.OutputStream);
Ahora puede soltar el MemoryStream del Caché.
HttpRuntime.Cache.Remove(imageGuid);
¿No puede almacenar los datos de imagen como archivo? – AnthonyWJones
Esta fue la primera ruta, pero almacenar la imagen en la base de datos fue la solución preferida. (Por encima de mi cabeza) Así que tengo que sacar lo mejor de la situación. – markoo
Gracias por ayudar a todos. Respuestas rápidas y perspicaces. – markoo