Cryptographically secure token generation in C#
What is there to say about it?

The code generates 32 random bytes, fed by a good Cryptographically Secure Random Number Generator, seeded by the operating system. Then it converts to just lowercase hexadecimals.

There is only a very small chance that a CryptographicException is thrown by the random number generator, but if it happens it is currently not caught.