Wie kann man in einer ASP.NET MVC-Anwendung Zufallszahlen generieren, wenn ich genau eine Zahl pro Anfrage benötige? Um eine Zufälligkeit ausreichender Qualität zu erhalten, ist es nach MSDN erforderlich, mehrere Nummern zu generieren, die ein einzelnes einmal erstelltes System.Random-Objekt verwenden. Da für jede Anforderung in MVC eine neue Instanz einer Controller-Klasse erstellt wird, kann ich kein privates Feld verwenden, das im Konstruktor des Controllers für das Objekt "Random" initialisiert wurde. Also, in welchem Teil der MVC-App sollte ich das Random-Objekt erstellen und speichern? Ich speichere es zur Zeit in einem statischen Feld der Controller-Klasse und träge initialisieren es in der Aktion-Methode, die es verwendet:Generierung von Zufallszahlen in MVC-Anwendungen
public class HomeController : Controller
{
...
private static Random random;
...
public ActionResult Download()
{
...
if (random == null)
random = new Random();
...
}
}
Da das „random“ Feld durch mehrere Instanzen der Controller-Klasse zugegriffen werden kann, ist es Ist es möglich, dass sein Wert beschädigt wird, wenn zwei Instanzen gleichzeitig versuchen, ihn zu initialisieren? Und noch eine Frage: Ich weiß, dass die Lebensdauer der Statik die Lebensdauer der Anwendung ist, aber im Falle einer MVC-App, was ist das? Ist es von IIS Start bis zum Herunterfahren von IIS?