Blazor 服务器显示“由于底层连接关闭而取消了调用”

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

我们有一个 Blazor 服务器端 Web 应用程序,其信号器托管在 IIS 上。我们为 Blazor.start() 添加了带有 reconnectionHandler 和 reconnectionOptions 的 EventListener。当打开网站作为先前选项卡的一部分或在长时间睡眠后打开时,网站显示“发生错误。此应用程序可能不再响应,直到重新加载。”错误,并且控制台错误显示

Error: The list of component records is not valid.

Uncaught (in promise) Error: Invocation canceled due to the underlying connection being closed.
    at e.connectionClosed (blazor.server.js:1:27242)
    at e.connection.onclose (blazor.server.js:1:17377)
    at e.stopConnection (blazor.server.js:1:61423)
    at e.transport.onclose (blazor.server.js:1:59077)
    at e.close (blazor.server.js:1:47811)
    at e.stop (blazor.server.js:1:47400)
    at e.<anonymous> (blazor.server.js:1:52950)
    at blazor.server.js:1:49394
    at Object.next (blazor.server.js:1:49499)
    at a (blazor.server.js:1:48266)

IIS 中没有负载平衡并且启用了 Websocket。我在 Blazor github 上检查了一下,一些解决方案建议的解决方案是在 _Host.cshtml 中添加无缓存元标记,例如

<meta http-equiv="Cache-Control" content="no-store" />

即使添加了这个,我们仍然收到上述错误。我们是否遗漏了什么?任何帮助将不胜感激。

正常使用应用程序时不会出现该错误。信号器工作正常。

signalr blazor-server-side
3个回答
1
投票

我之前遇到过同样的问题,并在 github 上找到了这个 详细说明了相同的问题

正如 Steve 所提到的,将以下内容放在

body
上的
_Host.chtml
标签内,而不是将其作为元标签。

@{
    Response.Headers["Cache-Control"] = "no-store";
}

1
投票

令人震惊的是 app.MapBlazorHub(blazorHubPath) 区分大小写。当大小写不匹配时,您会收到问题中描述的相同错误。我们的 Windows 开发人员经常忽略 url 的大小写,不幸的是,这花了我很多时间。


0
投票

我想跟进这一点,因为原始帖子中提到了已接受的解决方案或带有支票的解决方案,并表示他们尝试过这一点。不过,我也添加了这一点,并且在类似的设置中仍然遇到问题。你有什么额外的运气或其他可以尝试的吗?

© www.soinside.com 2019 - 2024. All rights reserved.