我创建了一个可以从我的 Web 应用程序运行和访问的公共列表。
private static List<x> _x;
static readonly object lockObjx = new object();
public static void XCache()
{
if (_x != null)
return;
lock (lockObjx)
{
_x = GetFromDatabase();
}
}
Run Code Online (Sandbox Code Playgroud)
这一切都在默认应用程序池下愉快地运行。我现在需要添加一个可以更新此缓存的 Web 服务。我可以在默认应用程序池上运行此操作吗?如果没有,有没有办法可以在不安装 MEMCache 之类的情况下执行此操作。Service 和 Wepp 在同一服务器上运行。
为了实现这一点,您需要将该服务放入与 Web 应用程序相同的 ASP .NET 应用程序中。这通常意味着在 IIS 的同一站点中运行它们。
每个 ASP .NET 应用程序都有自己的 AppDomain。每个 AppDomain 都有自己的所有对象副本,包括静态引用。换句话说,数据不会在 AppDomain 之间共享,因此不会被 IIS 中的各个应用程序共享,即使它们运行在同一个 IIS 进程 (AppPool) 中。
这里有一篇很好的文章:http://odetocode.com/Articles/305.aspx。它可能有点旧,但应该仍然有效。
| 归档时间: |
|
| 查看次数: |
6784 次 |
| 最近记录: |