我今天遇到了一个问题,希望有人能够回答。我可能遗漏了一些东西,而且我现在没有代码在我面前,所以我从记忆中记住了这一点。
我有一个 .NET MVC Web 应用程序,它有两个层,一个 UI 层和一个服务层(WCF 服务)。UI 层具有对 WCF 服务的服务引用。
UI 层将一些数据缓存到 global.asax 文件中 Application_Start 上的静态变量中。这些静态变量位于引用的共享类库中的类中。
我的 WCF 层还引用了这个类库和提到的静态变量。
这两个层都安装在不同的服务器上,因此在它们自己的 IIS 实例下。
有什么方法可以让我的 WCF 服务访问由 UI 层填充的静态变量中的数据?我会认为服务层有自己的引用程序集实例,因此其中的变量只属于自己?
我问的原因是这个。服务层上曾经有一个 global.asax 文件,我最近也删除了它,它也用于填充共享库中的静态变量。
从服务层完全删除这个 global.asax 文件后,它仍然能够访问由 UI 层填充的数据(至少我认为是这样)。当服务层中的这些变量处于非活动状态时(我认为),应用程序仍将运行一段时间,并且我得到空引用异常。
再次填充变量的唯一方法是重新启动 UI 层应用程序池。然后该应用程序再次运行一段时间并重复。
我不确定我要解释的内容是否可行,在这种情况下我会遗漏一些东西,或者是否有人知道为什么会发生这种情况?