Blazor 服务器应用程序/实体框架无法在数据库访问中存活

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

我再次尝试调试我的 Blazor Server 应用程序,它使用实体框架与 SQL Server 数据库进行通信。

我已经完成了所有以前的决议,这些决议要求我将 DBCOntextFactory 传递给类而不是实际的 DBContext,因此所有 DBContext 都是短暂的并执行单个工作单元。

代码在本地VS Webserver中运行良好。我可以根据需要多次点击相关页面,它仍然可以正常运行。但是,如果我将应用程序发布到我的测试服务器,它会在一两次访问后显示“服务不可用”。这可能是由于 App Pool 以某种方式失败,但机制尚不清楚,因为没有报告任何信息。

我在事件日志的应用程序或系统部分没有看到任何相关条目。

没有错误被抛出或报告。

更新:

我刚刚在 VS Dev 环境中观察到一个奇怪的行为,这是从输出中抛出的:

[2023-05-02T13:56:43.835Z] 错误:连接断开,出现错误“错误:WebSocket 关闭,状态代码:1006(未给出原因)”。

[2023-05-02T13:56:46.836Z] 信息:将“_blazor”规范化为“https://localhost:7008/_blazor”。

这引出了一个问题——这里发生了什么?为什么 websocket 关闭了?

有趣的是,它幸存下来并产生了从数据库加载的数据。

我可以在 VS 测试服务器中无限期地重新加载页面,但在 IIS Web 服务器上只能重载两三次。

结束更新

我现在已经多次检查代码,并涵盖了所有提到的可能原因的基础:

1.) 我使用 Blazor/EF DBContext Factory 在使用它的地方本地生成我的 DBContext,并且始终符合 UoW 原则。 2.) 我将“使用”应用于我生成的每个 DBContext 实例。 3.) 我已经跟踪了 dbcontext 的处置并且它正在被处置。

我的下一步是查看使用 .NET 异常处理类,看看是否有我没有看到的异常被抛出。这是主要问题,我看不到任何类似原因的东西。我看的任何地方都看不到任何错误。

这是我早期经历的一些背景。我让它运行了一段时间,然后两天前它又开始崩溃了,我检查了我的更改但没有看到任何东西 - 可能是因为我没有多次运行这个过程,所以无论发生什么似乎都涉及多次点击页面。

我还可以尝试其他哪些选择?我怎样才能看到导致失败的原因?

历届历史:

entity-framework asp.net-core blazor
© www.soinside.com 2019 - 2024. All rights reserved.