c# - Blazor“当前没有元素与组件 {n} 关联”错误,但仅在生产中
问题描述
我的网站托管在 IIS 中运行的 .Net 5 Web 服务上,一切正常。但是我有一系列页面作为搜索页面来查看结果列表,然后是链接到详细信息页面的每个结果的“查看更多详细信息”按钮。当我在开发环境中运行应用程序时,一切正常,在生产环境中,我可以确认数据正在通过 API 调用正确检索到我的 Web 服务OnInitializedAsync()
方法,我在网络选项卡中看到数据,我什至尝试将其打印到控制台以确保它在那里并且是正确的,甚至被正确反序列化。但是应用程序抛出错误“错误:当前没有元素与组件 159 关联”(159 是其中之一,它显示多个数字,因为此错误在浏览器控制台中多次显示)。只有在生产环境中运行时才会发生此错误。我的问题是,当页面加载并且所有数据都在那里时,没有显示任何数据,也没有任何组件得到更新。为什么这在开发环境中可以正常工作,但在生产环境中会崩溃。这是一个已知问题,还是我可能在某个地方犯了某种错误?
我知道这个错误意味着一个组件被引用但实际上为空,或者我试图在页面中显示来自 C# 变量的数据,但该变量为空。但是为什么它是空的,我的数据在那里,它不应该是空的。我会发布原始数据结果,但其中包含敏感信息,所以我不能。但最让我困惑的是,有多个页面遵循相同的概念,而且它们似乎都运行良好,除了这个。
我想这有助于我判断哪个组件“当前未关联”与该元素。但是我找不到任何东西可以告诉我哪个组件给我带来了麻烦。有人能指出我正确的方向吗?
非常感谢提前!
PS我不是在找人来为我解决这个问题,但如果有人以前见过这个,那么朝着正确的方向轻推将是理想的。
解决方案
好吧,我发现了问题。我不得不注释掉各个组件并重新发布该站点大约 20 多次,以缩小导致问题的组件的范围。我在我们的网络上运行了另一个服务,它允许用户访问网络上通常不可用的不同打印机,并且我将这些打印机的引用存储在数据库中。我正在加载的页面提取了一个打印机列表,该列表在生产环境中为空,因为它使用了不同的 Google Chrome 实例,这意味着存储在其中的列表在localStorage
我导航到该页面之前从未被下载和存储下载列表。if ({list} != null)
因此,该组件块开头的一个简单解决了我的问题。菜鸟的错误,但感谢任何为我调查过的人!
推荐阅读
- javascript - 附加事件处理程序和每个函数
- angular - 打字稿传单标记自定义属性
- r - R plotly plot_ly 函数:当我在项目中调用 plotly 时,不会出现轴标题
- import - Dspace 导入器找不到集合
- sql - 加入发货后订单数量翻倍
- excel - Excel VBA:保存部分数据每次都会创建新行。如果行有值如何更新
- macos - 如何从使用磁盘工具加密的驱动器中恢复密码提示?
- html - 如何消除数字输入箭头?
- node.js - 使用 MongoClient.connect() 时的 saslprep 警告
- vue.js - Vuejs - 当父级具有“活动”类时更改子元素的 img 源