Jaki jest poprawny sposób generowania liczb losowych w aplikacji ASP.NET MVC, jeśli potrzebuję dokładnie jednego numeru na żądanie? Według MSDN, aby uzyskać losowość o odpowiedniej jakości, konieczne jest generowanie wielu liczb za pomocą pojedynczego obiektu System.Random, utworzonego raz. Ponieważ dla każdego żądania w MVC tworzone jest nowe wystąpienie klasy kontrolera, nie mogę użyć prywatnego pola zainicjowanego w konstruktorze kontrolera dla obiektu losowego. Więc w jakiej części aplikacji MVC powinienem utworzyć i przechowywać obiekt losowy? Obecnie przechowywać go w statycznym polu klasie kontrolera i leniwie go zainicjować w sposobie działania, który wykorzystuje go:Generowanie liczb losowych w aplikacjach MVC
public class HomeController : Controller
{
...
private static Random random;
...
public ActionResult Download()
{
...
if (random == null)
random = new Random();
...
}
}
Ponieważ „random” pole może być dostępne przez wiele instancji klasy kontrolera, to jest możliwe, że jego wartość zostanie uszkodzona, jeśli dwa wystąpienia spróbują go zainicjować jednocześnie? I jeszcze jedno pytanie: Wiem, że czas życia statyki to czas życia aplikacji, ale w przypadku aplikacji MVC, co to jest? Czy to od uruchomienia IIS do zamknięcia IIS?