我正在构建一个可以在客户端模式和服务器模式之间切换的 Blazor 应用程序。应用程序的某些部分只能在其中一种情况下工作,并且需要在这种情况下执行回退代码。
有没有一种好方法可以检查例如 Mono 是否正在运行?
有什么建议么?
使用RuntimeInformation.OSDescription
RuntimeInformation.OSDescription == "web"
也许这可以帮助你:
// Mono WebAssembly is running.
if (JSRuntime.Current is MonoWebAssemblyJSRuntime mono)
{
}
else
{
}
另请参阅有关 BlazorDualMode 的说明,它允许您在两种模式下运行应用程序以及检查正在运行的模式。
希望这可以帮助。
使用 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;
}
这个答案是由微软在这里提供的。
RuntimeInformation.IsOSPlatform(OSPlatform.Create("WEBASSEMBLY"))