Gerador de número aleatório retornando zeros

Eu tenho um aplicativo ASP.NET que depende da classe Random para gerar uma seqüência de caracteres pseudo-aleatória. Ele usa o código a seguir (isso faz parte de um pedaço maior de código de amostra fornecido pelo Google para aplicativos SSO):

    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);
    }
}

Isso normalmente funciona muito bem, mas de tempos em tempos começa a gerar uma sequência de 'a'. Pelo que sei da depuração, o Random simplesmente para de retornar números aleatórios e preenche bytes com o mesmo valor repetidamente. Corrigi isso usando um GUID, mas estou curioso para saber o que aconteceu no código original. Estou assumindo alguma forma de exaustão da entropia, mas não consigo encontrar nenhuma referência nos documentos. Além disso, sempre que isso aconteceu, a execução de iisreset restaurou o comportamento correto.

Qualquer sugestão sobre o que estava dando errado seria muito apreciada.

questionAnswers(1)

yourAnswerToTheQuestion