gpt4 book ai didi

c# - .net web api 服务器中的静态变量

转载 作者:行者123 更新时间:2023-11-30 13:55:27 24 4
gpt4 key购买 nike

<分区>

我有一个 web api 服务器,它基本上响应 2 个请求:停止和启动。

开始时它会做几件事,例如,初始化每 X 秒执行一个方法的计时器,而停止时它只是停止计时器。

为了实现这一点,我创建了一个处理操作逻辑的单例类。 (它需要是单例的,这样计时器和更多变量对于所有请求只存在一次)。

服务器运行良好,但最近我在访问 Globalconfiguration.AppSettings 时遇到了 AccessViolationException,以便从我的 webconfig 文件中检索值。

我通过查看日志发现调用了单例类终结器,即使我没有重新启动服务器也是如此。

终结器调用了一个我经常使用的方法,并且在其他情况下工作正常,这个方法使用了引发异常的 GlobalConfiguration 类。

我试图找到造成这种情况的原因,但没有成功。

所以基本上这里有两个错误:1. 为什么突然调用终结器?服务器可以运行一周。2. AccessViolationException。

也许错误是相关的?如果我的应用程序内存以某种方式被清理,是否会导致调用终结器并导致访问 GlobalConfiguration 出现异常?只是一个理论....

或者也许我没有正确处理单例?但是,在阅读了 C# Web 服务器中的静态变量后,我发现它们应该在应用程序存在时存在,因此该错误可能与处理单例无关。我确实处理得很好 - 单例有一个私有(private)静态字段,它保存实际实例,初始化通过锁定和双重检查发生,以防止多个线程创建单例。

我的方法可以吗?您是否看到我在此行为中没有预料到的任何可能的错误,或者您是否知道 .net 框架的任何行为可能导致我的静态单例被破坏?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com