Asp.net
IIS 應用程序池和靜態類
我一直想知道,假設您有兩個 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 不會反映在網站中所做的更改。