The Mutex documentation states:
The Mutex class enforces thread identity, so a mutex can be released
only by the thread that acquired it. By contrast, the Semaphore class
does not enforce thread identity. A mutex can also be passed across
application domain boundaries.
ASP.NET implements thread agility, meaning:
... IIS is free to use more than one thread to handle a
single request, although not in parallel.
If these two statements are true, then it must be unsafe to use the Mutex class from within an ASP.NET request, because a request can be processed by multiple threads and a mutex can only be released by the thread that acquired it.
Despite this, I can't find it written anywhere that Mutex cannot be used within an ASP.NET request.