如何在 ASP.NET 核心产品服务器上禁用 "Attempting to reconnect to the server" 消息

How to disable "Attempting to reconnect to the server" message on ASP.NET Core producton server

我有一个 ASP.NET Core 3.1 C# razor 页面应用程序,它也使用一些 Blazor 服务器端 razor 组件。我已将它发布到 Windows 2008 R2 服务器上的 IIS。 但是,当在 Chrome 中用一部安卓手机 phone 浏览网站时,会定期出现一条消息:

Attemting to reconnect to the server

还有当用户有一段时间不活动时,例如关闭手机 phone 显示屏,出现一条消息

Disconnected from server. Reload page ...

该网站不是英文网站,这些通用消息不利于最终用户体验。有什么方法可以禁用这些消息,或者至少将它们翻译成另一种语言?

到目前为止,我只找到了一种方法如何在不包含任何服务器端 Blazor 组件的页面上禁用 Blazor 覆盖。这很简单,我创建了一个空接口 IPageWithBlazor 并使包含服务器端 Blazor 的所有剃须刀页面模型都实现了这个空接口。现在我可以在 _Layout.cshtml 中使用以下条件:

@if (this.Model is IPageWithBlazor)
{
    <script type="text/javascript" src="~/js/blazor.polyfill.min.js"></script>
    <script src="~/_framework/blazor.server.js"></script>
}

关于翻译消息有

服务器端 Blazor 实际上也有一个答案。根据这个:ASP.NET Core Blazor hosting models,可以在 _Host.cshtml 的正文中定义一个 ID 为 components-reconnect-modal 的 div 元素,以操纵在连接时显示的叠加层失利。

看起来像这样:

<body>
...
<!-- Blazor overlay -->
<div id="components-reconnect-modal"></div>

<app>
    @(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered))
</app>
...
</body>

Blazor 根据应用的状态应用这些自定义 类。根据文档,这些 类 有效:

  • components-reconnect-show:连接丢失。客户端正在尝试重新连接。显示 modal.Then 您可以使用 CSS 将自定义样式应用到屏幕叠加层。如果您想将它们全部删除,您可以选择完全不显示它们。
  • components-reconnect-hide: 与服务器重新建立活动连接。隐藏模态。
  • components-reconnect-failed: 重连失败,可能是网络故障。要尝试重新连接,请调用 window.Blazor.reconnect().
  • components-reconnect-rejected: 重新连接被拒绝。已到达服务器但拒绝连接,服务器上的用户状态丢失。要重新加载应用程序,请调用 location.reload().

要完全隐藏叠加层,例如您可以添加此 CSS:

.components-reconnect-show, .components-reconnect-failed, .components-reconnect-rejected {
     display: none;
}

如果您想要叠加层的自定义外观,您可以在 _Host.cshtml 中的 div 中填写您喜欢的内容:

<div id="components-reconnect-modal" class="my-reconnect-modal components-reconnect-hide">
<div class="show">
    <p>
        // Message when attempting to connect to server
    </p>
</div>
<div class="failed">
    <p>
        // Message when failing to connect
    </p>
</div>
<div class="rejected">
    <p>
        // Message when refused
    </p>
</div>

我不知道这是否适用于客户端,因为我只使用服务器端 Blazor。 我希望这对你有用。