我正在构建一个Blazor应用程序,它可以在客户端模式和服务器模式之间切换。在这种情况下,应用程序的某些部分只能相互配合工作,并且需要执行后备代码。
是否有一种很好的方法来检查例如Mono是否正在运行?
有什么建议吗?
答案 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"))