Bro*_*ato 7 asp.net-core blazor blazor-webassembly maui maui-blazor
出于测试目的,我想“捕获”我的应用程序中发生的任何错误并将其显示在页面上(而不是在控制台中)。为此,我在 .Net 6 框架中发现了ErrorBoundary组件。
来自 Microsoft 的 ErrorBoundaries 文档
起初,我在Bazor WebAssembly项目中成功测试了这个组件。
脚步:
自定义错误边界
@inherits ErrorBoundary
@if (CurrentException is null)
{
@ChildContent
}
else if (ErrorContent is not null)
{
@ErrorContent(CurrentException)
}
else
{
<div style="background-color: yellow; border: 2px dashed black; white-space: pre; font-family: consolas, monospace;">
@foreach (var exception in receivedExceptions)
{
<div class="received-exception" style="background-color: rgba(255,255,255,0.3); margin: 0.5rem; padding: 0.5rem;">
@exception.Message
</div>
}
</div>
}
@code {
List<Exception> receivedExceptions = new();
protected override Task OnErrorAsync(Exception exception)
{
receivedExceptions.Add(exception);
return base.OnErrorAsync(exception);
}
public new void Recover()
{
receivedExceptions.Clear();
base.Recover();
}
}
Run Code Online (Sandbox Code Playgroud)
测试此应用程序并在 FetchData 中导航时,会引发错误并显示在页面上。
到目前为止,一切都很好。现在我想做同样的事情,但这次是针对.NET Maui Blazor项目。
脚步:
不幸的是,该项目在尝试启动时立即崩溃。
简单地说:.NET Maui Blazor 项目似乎不支持ErrorBoundary 。
<ErrorBoundary>
@Body
</ErrorBoundary>
Run Code Online (Sandbox Code Playgroud)
上面的简单代码在 Blazor Maui 中不起作用。
所以我不知道ErrorBoundary是否与 .NET Maui Blazor 兼容?如果没有,如何捕获 Blazor Maui 项目中的任何错误并将其显示在页面上?
尝试破译错误,乍一看,您继承的 ErrorBoudary 类型似乎需要一个未注入到您的 MAUI 项目中的依赖项。
我发现一篇文章似乎可以解释您的问题Githubmemory 关于此问题 基本上,您需要实现该接口,然后将该新类注册为可用服务。
我猜 Blazor Wasm 默认实现了这个?
| 归档时间: |
|
| 查看次数: |
6438 次 |
| 最近记录: |