IIS 应用程序池和静态类

10

我一直想知道,假设你有两个在同一个应用程序池中运行的 asp.net 网站。

我们称它们为网站1和网站2。

这两个网站都引用了一些共享代码,我们称之为 Awesome.dll。

假设 Awesome.dll 包含以下定义的类:

public static class Foo
{
   public static string Bar { get; set; }
}

我的问题:

这两个网站共享同一个静态类,还是它们各自拥有独立的副本?也就是说,如果网站1对Foo.Bar进行更改,这种更改是否会反映在网站2中?

2个回答

9

我的理解是,虽然这些网站将在同一个应用程序池中,但它们仍将位于自己的应用程序域中。这意味着它们无法看到彼此的对象,并且每个网站都将有自己的静态类实例。


我匆忙地搭建了一个快速测试框架并确认,谢谢! - iamkrillin

0
每个应用程序(网站)都在AppDomain中运行,并且静态数据在应用程序域的上下文中,尽管Web应用程序在同一个应用程序池中运行。
因此,对Web Site进行的更改不会反映在Web Site2中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接