请考虑以下情况:
我在此页面上阅读了有关ASP .NET应用程序生命周期的一些信息:http://msdn.microsoft.com/en-us/library/ms178473.aspx
但我仍然无法回答我的问题。
提前感谢您将来的帮助
我刚刚在VS2010下进行了一些测试。
以下是我项目的主要组成部分列表:
以下是SingletonTest类的代码:
public class SingletonTest
{
private int counter;
private static SingletonTest instance = null;
public int Counter
{
get
{
return counter;
}
}
public static SingletonTest Instance
{
get
{
if (instance == null)
instance = new SingletonTest();
return instance;
}
}
private SingletonTest()
{
counter = 0;
}
public void IncrementCounter()
{
counter++;
}
}
以下是Index操作方法的代码:
public ActionResult Index()
{
SingletonTest st = SingletonTest.Instance;
st.IncrementCounter();
return View();
}
以下是视图的代码:
@SingletonTest.Instance.Counter
这是我遵循的测试场景:
此测试显示在处理下一个请求时,步骤1中生成的SingletonTest实例可用。 我想在服务器上为我的Web应用程序分配了一个内存空间。
然后我停止了IIS服务器,我再次关注了我的测试场景。 我得到了与以前相同的结果:1,2,....
答案 0 :(得分:0)
即使单例可能会在多个请求中持续存在,但您需要注意第二次测试的原因 - 当IIS重新启动或应用程序池被回收时,一切都将丢失。
你确定你需要一个单例实例吗?
如果您希望在所有请求中保持某种状态,最好使用外部存储,例如数据库。
答案 1 :(得分:0)
IIS将创建哪个应用程序的多个实例来处理并发请求?
如果IIS在高流量情况下创建同一应用程序的多个实例,我认为单例对象不会相同