Blazor WebAssembly -处理浏览器关闭时不触发



我有blazor应用程序运行WASM(不是服务器)在。net 5,版本5.0.3。我希望能够检测到当用户导航远离网站或关闭浏览器。dispose似乎只有在应用程序内部导航时才会触发(即页面或控件由于导航而被丢弃)。

这是我的页面标记,我也尝试实现IAsyncDisposable与相同的结果:

@page "/"
@using Microsoft.AspNetCore.Authorization
@attribute [Authorize]
@inject NavigationManager NavigationManager
@inject IHubManager HubManager
@implements IDisposable
<Tabs />

@code{
public void Dispose()
{
_ = HubManager.DisposeAsync();
}
}

根据我在这里读到的一些帖子,这种方法在使用blazor的服务器版本时有效,谁能告诉我是否有另一种方法我需要与WASM一起使用?

目标是能够在用户离开站点时关闭/处置与我的signalR集线器的连接。

调试时不能碰到断点的原因在Blazor WebAssembly文档中有提到:

现在,你不能:

  • 对未处理的异常进行中断。
  • 在调试代理运行之前,在应用程序启动期间命中断点。这包括Program.cs中的断点和OnInitialized{Async}生命周期方法中的断点,这些方法是由从应用请求的第一个页面加载的。
  • 调试非本地场景(例如,Windows Subsystem for Linux (WSL)或Visual Studio codesspaces)。
  • 在调试期间自动重建托管的Blazor WebAssembly解决方案的后端服务器应用程序,例如通过使用dotnet watch run运行应用程序。

我猜组件处理是这些场景之一,尽管它没有被提及。

在这些场景中,我所做的只是使用记录器记录一些行或添加一些Console.WriteLine(...),并使用浏览器中的F12工具控制台查看它们是否被击中。

注意:这适用于在整个Blazor站点导航时的组件。正如其他成员指出的,如果你关闭浏览器窗口,你将无法在F12工具中看到任何东西,因为它是自动关闭的。

相关内容

  • 没有找到相关文章

最新更新