当 Visual Studio 创建基本 Blazor 服务器应用时,它包含一个 Error.cshtml 文件。据我了解,如果渲染时出现未处理的异常,则会显示此信息。
但如果在 MainLayout.razor 中我有:
<ErrorBoundary>
<ChildContent>
<!-- ... -->
</ChildContent>
<ErrorContent Context="error">
<!-- ... -->
</ErrorContent>
</ErrorBoundary>
会Error.cshtml
被显示吗?或者现在是否处理先前显示<ErrorContent>
的所有情况。Error.cshtml
我问这个问题是因为我已经这样设置了,而且我从未出现过错误页面。所以我认为 if 被定义了它没有被使用<ErrorBoundary>
。但我担心我只是在它显示的情况下没有遇到异常。
该
<ErrorBoundary>
组件是 .NET 6 中的一项新功能,允许您处理 Blazor 组件中未处理的异常并显示自定义错误内容。该Error.cshtml
文件是 ASP.NET Core 应用程序的默认错误页面,当 Blazor 组件外部(例如中间件、控制器或 Razor 页面)发生未处理的异常时,将显示该页面。如果您
<ErrorBoundary>
在文件中使用该组件MainLayout.razor
,它将捕获子组件中发生的任何未处理的异常,并渲染 ,<ErrorContent>
而不是默认的黄色条。但是,这并不意味着该Error.cshtml
文件从未被使用过。在某些情况下,组件无法处理异常,例如:<ErrorBoundary>
当在应用程序的初始渲染期间、组件渲染之前发生异常时。<ErrorBoundary>
当组件本身或其参数发生异常时。<ErrorBoundary>
组件的组件中时,例如文件中的顶级组件App.razor
。在这些情况下,将显示 Error.cshtml 文件而不是
<ErrorBoundary>
组件。因此,您不应Error.cshtml
从应用程序中删除该文件,因为它对于处理<ErrorBoundary>
组件无法处理的错误仍然有用。我希望这回答了你的问题。如果您想了解有关该
<ErrorBoundary>
组件及其使用方法的更多信息,可以查看以下资源:(1) 处理 ASP.NET Core Blazor 应用中的错误 | 微软学习。https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/handle-errors?view=aspnetcore-7.0。(2) 处理 ASP.NET Core Blazor 应用中的错误 - GitHub。https://github.com/dotnet/AspNetCore.Docs/blob/main/aspnetcore/blazor/fundamentals/handle-errors.md。