【问题标题】:Sharing data thru WCF services and aspx pages通过 WCF 服务和 aspx 页面共享数据
【发布时间】:2025-12-11 02:05:01
【问题描述】:

我的 Web 应用程序公开了一些服务 (WCF),我需要加载一个 XML 文件并将其“存储”为对整个 AppDomain 可见的静态变量。需要从服务或页面查询和更新该变量。

问题是,我在 Application_Start (Global.asax.cs) 中加载了该变量,但是当服务请求到达时,该变量为空,需要“重新加载”,并且每个服务都会发生这种情况 (3),所以我最终得到了一个静态变量的 3 个实例。

如何确保我的所有应用程序都在同一个 AppDomain 上运行?我做错了什么?

Win7 RTM 机上的 VS2008 SP1

【问题讨论】:

  • 我看不出有什么办法。 WCF 服务与 ASP.NET 应用程序不在同一个 AppDomain 中。
  • 根据此页面上的图表可以...msdn.microsoft.com/en-us/library/aa702682.aspx
  • 我不知道。您的应用程序在 IIS 中的结构是什么?一个应用程序?所有相同的应用程序池?也许添加一些调试代码,显示三个服务中的 AppDomain,看看它们是否在同一个 AppDomain 中。
  • 好提示!这是一个简单的应用程序(与 wcf 服务和页面相同的应用程序),根据我在此站点上找到的脚本 learn.iis.net/page.aspx/164/…,它在同一个 AppDomain 上运行

标签: wcf .net-3.5 iis-7.5


【解决方案1】:

好的,经过一番研究,我找到了解决方案。我将在此处发布解决方案以及许多帮助我找到它的链接。

WCF 服务和 ASPX 页面在并行运行时(默认)确实在同一个 AppDomain 上运行,我的问题是 AppDomain 正在被回收,因为我的应用程序正在我的应用程序的根文件夹下创建一个文件夹。当我将该创建从应用程序本身移开时,AppDomain 将重新启动,因此我始终保留我的静态值。

这是我阅读并帮助我找到解决方案的有趣帖子列表:

【讨论】: