Asp.net

IIS 應用程序池和靜態類

  • June 17, 2012

我一直想知道,假設您有兩個 asp.net 網站在同一個應用程序池中執行。

讓我們稱他們為網站 1 和網站 2

這兩個網站都引用了一些共享程式碼,我們稱之為 Awesome.dll

假設 Awesome.dll 包含一個定義如下的類

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

我的問題:

兩個網站是否共享相同的靜態類,或者它們是否有自己的獨立副本?也就是說,如果網站 1 對 Foo.Bar 進行了更改,那麼該更改是否反映在網站 2 中?

我的理解是,雖然這些網站將位於同一個 App Pool 中,但它們仍將位於它們自己的App Domain中。這意味著他們看不到彼此的對象,並且每個對像都有自己的靜態類實例化。

每個應用程序包括(WebSite)都在應用程序域的上下文中執行 AppDomain 和靜態數據,儘管 Web 應用程序正在執行相同的應用程序池

因此,網站 2 不會反映在網站中所做的更改。

引用自:https://stackoverflow.com/questions/11071067