【发布时间】:2022-10-08 23:58:13
【问题描述】:
我的 Blazor 服务器代码中有“CircuitHandler”类的“OnConnectionDownAsync”。但是这个偶数处理程序是在调用“NavigationManager.NavigateTo()”期间调用的。任何地方都描述了这种行为,或者我在这里做错了什么,这导致了导航期间的“OnConnectionDownAsync”调用?这种行为导致现有连接关闭并在导航期间打开新连接,我觉得这是一种开销。
public class TrackingCircuitHandler : CircuitHandler
{
private HashSet<Circuit> circuits = new();
public override Task OnConnectionUpAsync(Circuit circuit,
CancellationToken cancellationToken)
{
TimeSpan time = DateTime.Now.TimeOfDay;
circuits.Add(circuit);
return Task.CompletedTask;
}
//This is calling during navigation and causing a new connection open****************
public override Task OnConnectionDownAsync(Circuit circuit, CancellationToken cancellationToken) { TimeSpan time = DateTime.Now.TimeOfDay; circuits.Remove(circuit); return Task.CompletedTask; } public int ConnectedCircuits => circuits.Count; }
【问题讨论】:
-
您能否分享完整的代码 sn-p 您如何称呼它。您有机会检查请求的跟踪日志吗?
-
@Md Farid Uddin Kiron 我有这个 HTML <button @onclick="GoToCounter">Click Here</button> 它是事件处理程序 private async void GoToCounter() { NavigationManager.NavigateTo("Counter", true); }。在 "NavigationManager.NavigateTo("Counter", true);" 行之后,它正在调用 "OnCircuitClosedAsync(Circuit circuit, CancellationToken cancelToken)" 以关闭连接,然后再次打开。简单的源代码在这里1drv.ms/u/s!ArnWsPocPHeKha06aYIcKcXnBEpzBg?e=b54J4i
标签: asp.net asp.net-core .net-core blazor-server-side