为了调试我的ASP.NET应用程序,我创建了一个名为MessageHandling.cs
的类。此时它是单例模式,但我希望它是每个请求的实例。
我的mssqlDb
课会在MessagesHandling
课程中填写以下消息:'Db connected','数据已插入'以及类似的内容。在处理apsx页面的所有事件后,MessageHandling
类将在事件createFile.apsx.cs
中由Page_LoadComplete()
读取。所有错误和消息都将显示给用户。
此时系统正在进行调试。此时的问题是在发送请求后MessageHandling没有被清空,并且错误也在第二个浏览器上显示而没有做任何事情。我还希望能够使用此系统向最终用户显示消息,例如:“Blog created”。
我的问题基本如下:
Class A
创建Class B
Class C
读取Class B
单例不起作用,因为它不是每个用户/会话/请求。所以我需要另一种方法。
答案 0 :(得分:17)
将其存储在HttpContext.Items
中,就像每个请求一样。
答案 1 :(得分:4)
HttpContext.Current
是当前请求的HttpContext
对象。它的Items
属性为IDictionary
,object
到object
。你可以把任何你喜欢的东西放在那里,它将与当前的请求挂钩。
答案 2 :(得分:-1)
您是否可以检查单例的构造函数以查看该对象是否存在于会话中?如果没有,创建它然后返回它?
private Singleton()
{
// do whatever
}
public Singleton GetMySingleton()
{
if(HttpContext.Current.Items["MyCustomSingleton"] == null)
HttpContext.Current.Items["MyCustomSingleton"] = new Singleton();
//
return (Singleton)HttpContext.Current.Items["MyCustomSingleton"];
}