我目前面临一个问题,我似乎无法解释。在我的 C# 解决方案中,我有三个项目 A、B 和 C。A 和 B 都引用项目 C,其中包含一个静态列表容器。现在,当项目 A 添加到容器时,项目 B 无法在容器中找到内容。有什么建议为什么会发生这种情况?
问问题
120 次
1 回答
2
static
项目仅在同一个 AppDomain中共享。如果 A 和 B 在不同的空间中运行(两个不同的网站、控制台应用程序、WinForms 等等),它们将不会共享相同的内存空间。
如果你需要在两个不同的进程之间共享数据,你需要想出一种不同的方法来做到这一点。一些选项是:
- 使用数据库
- 使用文件
- 创建托管共享数据的 Web 服务
- 创建托管数据的 Windows 服务
每个人在开发时间/复杂性/可维护性/等方面都有其优点/缺点。
如果它们是两个不同的网站,您可以将它们设置为使用相同的 AppPool,并且它们可以共享静态变量(尽管我从未尝试过)。
编辑:根据进一步的研究,即使两个 Web 应用程序共享一个 AppPool,它们也会有不同的 AppDomains。(一个 AppPool 可以托管多个独立的 AppDomain)。
于 2013-03-07T17:05:13.700 回答