Использование JSRuntime.Current ненадежно, так как оно пустое во время запуска.Следующее должно работать в любое время.
Type.GetType("Mono.Runtime") != null;
Я добавляю этот класс в DI-контейнер и, таким образом, могу управлять им.
public class JsRuntimeLocation
{
public bool IsClientSide => HasMono;
public bool IsServerSide => !HasMono;
public bool HasMono => Type.GetType("Mono.Runtime") != null;
}