ASP.NET MVC - Estado de sesión compartida entre controladores

Todavía no estoy familiarizado con la Inversión de Control (aunque ahora estoy aprendiendo), así que si esa es la solución a mi pregunta, hágamelo saber y volveré a aprender sobre el tema.

Tengo un par de controladores que necesitan una variable de Sesión, naturalmente, nada especial ha sucedido debido a cómo funciona Session en primer lugar, pero esto me hizo preguntarme cuál es la forma más limpia de compartir objetos relacionados entre dos controladores separados. En mi caso específico, tengo un controlador de carga y un controlador de producto que trabajan conjuntamente para cargar archivos de imagen. A medida que los archivos son cargados por el UploadController, los datos sobre la carga se almacenan en la sesión. Después de que esto suceda, necesito acceder a esos datos de sesión en el controlador de producto. Si creo una propiedad get / set para la variable Session que contiene mi información de carga en ambos controladores, podré acceder a esos datos, pero al mismo tiempo estaré violando todo tipo de DRY, por no mencionar la creación de un, en el mejor de los casos, diseño confuso donde un objeto es compartido y modificado por dos objetos completamente desconectados.

¿Que sugieres?

Contexto exacto:

Una vista de carga de archivos publica un archivo en UploadController.ImageWithpreview (), que luego lee el archivo publicado y lo copia en un directorio temporal. Después de guardar el archivo, otra clase produce una miniatura de la imagen cargada. La ruta tanto al archivo original como a la miniatura generada se devuelven con un JsonResult a una devolución de llamada javascript que actualiza algunos contenidos dinámicos en un formulario en la página que puede ser "Guardado" o "Cancelado". Ya sea que la imagen cargada se guarde o se salte, necesito moverla o eliminarla y la miniatura generada desde el directorio temporal. Para facilitar esto, UploadController realiza un seguimiento de todos los archivos cargados y sus miniaturas en un objeto de cola mantenido por sesión.

De vuelta en la vista: después de que el formulario se rellena con una miniatura generada de la imagen que se cargó, el formulario se envía de nuevo al Control de Productos donde se identifica el archivo seleccionado (actualmente guardo el nombre de archivo en un campo Oculto, lo que me di cuenta es un vulnerabilidad horrible), y luego copiado del directorio temporal a una ubicación permanente. Idealmente, me gustaría simplemente acceder a la Cola que tengo almacenada en la Sesión para que el formulario no tenga que contener la ubicación de la imagen como lo hace ahora. Así es como he imaginado mi solución, pero escucharé con entusiasmo cualquier comentario o crítica.

Respuestas a la pregunta(2)

Su respuesta a la pregunta