当前位置:  开发笔记 > 后端 > 正文

是否为每个请求创建了AppDomains?

如何解决《是否为每个请求创建了AppDomains?》经验,为你挑选了1个好方法。

在ASP.NET 3.5(使用IIS6)中,是否为每个请求创建了AppDomains?我知道所有应用程序在w3wp.exe下都有自己的AppDomain,但整个AppDomain的工作原理是什么?

我今天和一位试图说服我的同事争论说,如果一个ASP.NET应用程序有一个静态对象(或Singleton类),那么这个对象将在所有请求之间共享.我认为这是错误的.我对吗?我如何说服我的同事?

谢谢!



1> John Clayton..:

我很遗憾地说你的同事是对的.在ASP.NET应用程序中,IIS中配置的每个应用程序都在其自己的AppDomain中运行,AppDomain是单个对象的范围.所以App1中的单例可用于App1的所有请求(如果不仔细处理,可能会成为并发),但App2中的请求将无法访问App1中的单例.

HTTP管道中的线程和池
(来源:microsoft.com)

MSDN杂志中的这个图表有助于展示每个应用程序如何在自己的AppDomain中隔离.虽然该图显示了IIS5工作进程(aspnet_wp.exe),但IIS6工作进程对于配置为在同一应用程序池中运行的应用程序类似.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有