首页 > 解决方案 > Blazor“当前没有元素与组件 {n} 关联”错误,但仅在生产中

问题描述

我的网站托管在 IIS 中运行的 .Net 5 Web 服务上,一切正常。但是我有一系列页面作为搜索页面来查看结果列表,然后是链接到详细信息页面的每个结果的“查看更多详细信息”按钮。当我在开发环境中运行应用程序时,一切正常,在生产环境中,我可以确认数据正在通过 API 调用正确检索到我的 Web 服务OnInitializedAsync()方法,我在网络选项卡中看到数据,我什至尝试将其打印到控制台以确保它在那里并且是正确的,甚至被正确反序列化。但是应用程序抛出错误“错误:当前没有元素与组件 159 关联”(159 是其中之一,它显示多个数字,因为此错误在浏览器控制台中多次显示)。只有在生产环境中运行时才会发生此错误。我的问题是,当页面加载并且所有数据都在那里时,没有显示任何数据,也没有任何组件得到更新。为什么这在开发环境中可以正常工作,但在生产环境中会崩溃。这是一个已知问题,还是我可能在某个地方犯了某种错误?

我知道这个错误意味着一个组件被引用但实际上为空,或者我试图在页面中显示来自 C# 变量的数据,但该变量为空。但是为什么它是空的,我的数据在那里,它不应该是空的。我会发布原始数据结果,但其中包含敏感信息,所以我不能。但最让我困惑的是,有多个页面遵循相同的概念,而且它们似乎都运行良好,除了这个。

我想这有助于我判断哪个组件“当前未关联”与该元素。但是我找不到任何东西可以告诉我哪个组件给我带来了麻烦。有人能指出我正确的方向吗?

非常感谢提前!

PS我不是在找人来为我解决这个问题,但如果有人以前见过这个,那么朝着正确的方向轻推将是理想的。

标签: c#iis.net-5blazor-webassembly

解决方案


好吧,我发现了问题。我不得不注释掉各个组件并重新发布该站点大约 20 多次,以缩小导致问题的组件的范围。我在我们的网络上运行了另一个服务,它允许用户访问网络上通常不可用的不同打印机,并且我将这些打印机的引用存储在数据库中。我正在加载的页面提取了一个打印机列表,该列表在生产环境中为空,因为它使用了不同的 Google Chrome 实例,这意味着存储在其中的列表在localStorage我导航到该页面之前从未被下载和存储下载列表。if ({list} != null)因此,该组件块开头的一个简单解决了我的问题。菜鸟的错误,但感谢任何为我调查过的人!


推荐阅读