I found the reason. I had previously written middleware that only allowed certain IP addresses to pass through to the admin section. As soon as I removed it, SignalR started working. That's how it goes. Of course, there were no problems with local development, and over time I forgot about this middleware.