Blazor 组件有时无法加载,有时按钮按下不起作用

问题描述 投票:0回答:1

我有一个标准的 .NET 6 MVC 网站。 我添加了一些从视图运行的服务器 blazor 组件。 有时该组件不会加载到页面上。 按 URL 上的刷新或 Enter 键可以修复该问题。 开发工具中的控制台没有显示任何错误。 网络选项卡也没有显示任何问题。
此外,按下某些控件的按钮也会停止工作。 重新加载,事件开始触发。 也是相同的开发工具响应,没有控制台错误或网络错误。

我的 MVC 视图:

 @(await Html.RenderComponentAsync<BlazorCom1>(RenderMode.Server, new { userid= Model.Id }));

我的 Blazor 组件(简化)

<button id="adduser" type="submit" @onclick="adduser" class="">Add User</button>
@code{
[Parameter]
public int userId{ get; set; }
protected override async Task OnInitializedAsync()
{
    
    await this.Refresh();

}
public async Task Refresh()
{
  //Does calls to our backend for data
}
private void adduser()
{
    
    //Do stuff on backend
}
}

与本地主机相比,它在外部网络服务器上肯定更加明显。 它发生在本地主机上,但明显较少。我的服务器已打开 Websocket。
我可以打开什么来获取有关可能发生的情况的更多信息? 我应该在启动中查找正在加载的内容或可能存在冲突的内容?

上面的代码实际上并没有说明这个问题,因为从所有角度来看这个问题都不应该发生。 Blazor 传输层出现问题。 按刷新一两次就可以了。开发人员控制台或网络选项卡中没有错误。 我认为这与将 Blazor 改造到现有的 mvc 应用程序有关。通常,当我在这里发帖时,我已经用尽了所有明显的解决方案,我希望这里的蜂巢思维有人偶然发现了类似的问题。

blazor azure-web-app-service blazor-server-side
1个回答
0
投票

好的,我找到了解决问题的方法。 看起来,在主页上,访问该站点的浏览器的 URL 需要与该站点的基本 URL 完全匹配。 这包括尾部斜杠。 因此,将这样的代码添加到我的主页解决了问题。

@inject NavigationManager MyNavigationManager

...

var here = MyNavigationManager.Uri;
if (!here.EndsWith('/'))
{
    var there = here + "/";
    MyNavigationManager.NavigateTo(there);
}
© www.soinside.com 2019 - 2024. All rights reserved.