0

我今天遇到了一个问题,希望有人能够回答。我可能遗漏了一些东西,而且我现在没有代码在我面前,所以我从记忆中记住了这一点。

我有一个 .NET MVC Web 应用程序,它有两个层,一个 UI 层和一个服务层(WCF 服务)。UI 层具有对 WCF 服务的服务引用。

UI 层将一些数据缓存到 global.asax 文件中 Application_Start 上的静态变量中。这些静态变量位于引用的共享类库中的类中。

我的 WCF 层还引用了这个类库和提到的静态变量。

这两个层都安装在不同的服务器上,因此在它们自己的 IIS 实例下。

有什么方法可以让我的 WCF 服务访问由 UI 层填充的静态变量中的数据?我会认为服务层有自己的引用程序集实例,因此其中的变量只属于自己?

我问的原因是这个。服务层上曾经有一个 global.asax 文件,我最近也删除了它,它也用于填充共享库中的静态变量。

从服务层完全删除这个 global.asax 文件后,它仍然能够访问由 UI 层填充的数据(至少我认为是这样)。当服务层中的这些变量处于非活动状态时(我认为),应用程序仍将运行一段时间,并且我得到空引用异常。

再次填充变量的唯一方法是重新启动 UI 层应用程序池。然后该应用程序再次运行一段时间并重复。

我不确定我要解释的内容是否可行,在这种情况下我会遗漏一些东西,或者是否有人知道为什么会发生这种情况?

4

1 回答 1

1

静态变量仅在 AppDomain 中是静态的。当 IIS 关闭应用程序池(由于不活动等)时,这些静态值将消失。

我将在您的 WCF 项目中引用静态变量,然后为 WCF 层添加服务以用于获取这些静态值。

于 2012-10-17T21:52:46.217 回答