¿Por qué no se almacena en caché mi imagen personalizada en el navegador?

Tengo un controlador personalizado que devuelve una imagen al navegador.

Las imágenes se obtienen de una base de datos.

Por alguna razón, las imágenes no están siendo almacenadas en caché por el navegador, y me preguntaba si alguien podría detectar lo que me falta en el siguiente código:

HttpContext.Current.Response.BinaryWrite(imageBytes);
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Public);
Context.Current.Response.Cache.SetAllowResponseInBrowserHistory(true);
if(imgRepGetCache.DateCached.HasValue)
    HttpContext.Current.Response.Cache.SetLastModified(imgRepGetCache.DateCached.Value);
HttpContext.Current.Response.Cache.SetExpires(DateTime.Now.AddDays(2));
HttpContext.Current.Response.ContentType = "image/jpeg";

O, alternativamente, si me estoy perdiendo completamente el punto de alguna manera y hay otro lugar en el que tengo que buscar.

Editar Según la solicitud de más información:

La URL es siempre la misma Estoy probando cargar el mismo archivo a través de la tubería IIS estándar y mi tubería en el mismo navegador en la misma PC. El que se carga a través de IIS normalmente se almacena en caché, mi archivo no.

Edit 2: Después de inspeccionar las solicitudes / respuestas HTTP en la ruta normal de IIS, creo que tiene algo que ver con el ETag. El ETag (que soy nuevo en este momento) parece ser una especie de suma de comprobación para el documento. En solicitudes posteriores de un navegador, se envía el ETag y si el servidor encuentra que el ETag no ha cambiado, devuelve un 304 - No modificado. ¡Todo bien! Pero ahora estoy configurando el ETag usando:

HttpContext.Current.Response.Cache.SetETag(imgRepGetCache.DateCached.ToString());

Pero no aparece en la respuesta. Cerca..

Editar 3: Lo arreglé al final después de aprovechar Firebug para divertirme al inspeccionar HTTP. Publiqué mi solución a continuación.

Respuestas a la pregunta(6)

Su respuesta a la pregunta