我有一个使用Web应用程序的asp.net网站,它们都在同一个应用程序池中(有1个工作进程)。该网站在其web.config文件中加载了httpmodule,奇怪的是主网站和应用程序将由httpmodule的单独实例提供。为什么是这样?由于它们处于相同的过程中,因此它们似乎应该使用一个实例。
此外,如果我尝试在应用程序中使用静态变量,它们将指向与asp.net网站不同的对象。同样的问题,因为它们在同一个过程中不应该是同一个对象,或者.net在过程中存在某种边界?
答案 0 :(得分:3)
IIS为每个应用程序创建一个单独的AppDomain。这些AppDomain位于同一操作系统进程中,但从托管代码的角度来看,可以将其视为单独的进程。即他们不共享加载的程序集,内存等。
http://www.odetocode.com/articles/305.aspx http://weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx http://msdn.microsoft.com/en-us/library/system.appdomain(VS.85).aspx