¿Cuál es la forma correcta de generar números aleatorios en una aplicación ASP.NET MVC si necesito exactamente un número por solicitud? Según MSDN, para obtener aleatoriedad de calidad suficiente, es necesario generar múltiples números usando un único objeto System.Random, creado una vez. Como se crea una nueva instancia de una clase de controlador para cada solicitud en MVC, no puedo usar un campo privado inicializado en el constructor del controlador para el objeto Random. Entonces, ¿en qué parte de la aplicación MVC debo crear y almacenar el objeto Random? Actualmente almaceno en un campo estático de la clase del controlador y perezosamente inicializarlo en el método de acción que lo utiliza:Generación aleatoria de números en aplicaciones MVC
public class HomeController : Controller
{
...
private static Random random;
...
public ActionResult Download()
{
...
if (random == null)
random = new Random();
...
}
}
Puesto que el campo "aleatorio" se puede acceder por varias instancias de la clase del controlador, es posible que su valor se corrompa si dos instancias intentan inicializarlo simultáneamente? Y una pregunta más: sé que la vida útil de la estática es la duración de la aplicación, pero en el caso de una aplicación MVC, ¿qué es? ¿Es desde el inicio de IIS hasta el cierre de IIS?