Zufallszahlengenerator gibt Nullen zurück

Ich habe eine ASP.NET-Anwendung, die sich auf die Random-Klasse stützt, um eine Pseudozufallszeichenfolge zu generieren. Es wird der folgende Code verwendet (dies ist Teil eines größeren Beispielcodes, der von Google für Apps SSO bereitgestellt wird):

    public static class SamlUtility
{
    private static Random random = new Random();

    private static char[] charMapping =  { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p' };

    public static string CreateId()
    {
        byte[] bytes = new byte[20]; // 160 bits

        random.NextBytes(bytes);

        char[] chars = new char[40];

        for (int i = 0; i < bytes.Length; i++)
        {
            int left = (bytes[i] >> 4) & 0x0f;
            int right = bytes[i] & 0x0f;
            chars[i * 2] = charMapping[left];
            chars[i * 2 + 1] = charMapping[right];
        }

        return new string(chars);
    }
}

Das funktioniert normalerweise sehr gut, aber von Zeit zu Zeit wird ein String von 'a' generiert. Nach dem, was ich beim Debuggen feststellen kann, gibt Random einfach keine Zufallszahlen mehr zurück und füllt stattdessen Bytes immer wieder mit demselben Wert. Ich habe dies mit einer GUID gepatcht, bin aber gespannt, was im Originalcode passiert ist. Ich gehe von einer Entropieerschöpfung aus, kann aber in den Dokumenten keinen Hinweis finden. Außerdem stellte die Ausführung von iisreset jedes Mal das richtige Verhalten wieder her.

Irgendwelche Vorschläge, was schief gelaufen ist, wären sehr dankbar.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage