5

我正在构建一个可以在客户端模式和服务器模式之间切换的 Blazor 应用程序。应用程序的某些部分只能在其中一种情况下工作,并且需要在这种情况下执行回退代码。

有没有一种好方法可以检查例如 Mono 是否正在运行?

有什么建议么?

4

4 回答 4

4

使用RuntimeInformation.OSDescription

RuntimeInformation.OSDescription == "web"
于 2020-05-27T12:34:11.143 回答
3

也许这可以帮助你:

// Mono WebAssembly is running.
if (JSRuntime.Current is MonoWebAssemblyJSRuntime mono)
{
}
else
{
}

另请参阅有关 BlazorDualMode 的说明,它允许您在两种模式下运行应用程序以及检查正在运行的模式。

希望这可以帮助。

于 2018-11-28T12:03:36.633 回答
1

使用 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;
  }
于 2018-12-08T05:41:27.610 回答
0

这个答案是由微软在这里提供的。

RuntimeInformation.IsOSPlatform(OSPlatform.Create("WEBASSEMBLY"))

于 2021-06-22T18:33:52.853 回答