检测客户端或服务器模式

时间:2018-11-28 09:53:55

标签: c# blazor

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

是否有一种很好的方法来检查例如Mono是否正在运行?

有什么建议吗?

4 个答案:

答案 0 :(得分:3)

使用RuntimeInformation.OSDescription

RuntimeInformation.OSDescription == "web"

答案 1 :(得分:2)

也许这可以帮助您:

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

另请参见instructions about BlazorDualMode,它使您可以在两种模式下运行应用程序,并检查正在运行的模式。

希望这会有所帮助。

答案 2 :(得分:1)

使用JSRuntime.Current是不可靠的,因为它在启动期间为null。以下内容应随时可用。

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;
  }

答案 3 :(得分:0)

此答案由 Microsoft here 提供。

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