首页 新闻 会员 周边 捐助

asp.net MVC用单例模式吗

0
悬赏园豆:10 [已关闭问题] 关闭于 2013-05-09 13:09

由于不想用session,所以我想定义一个类似于全局变量的类,用到了单例模式。

想用这种方法:登陆成功--》把登陆信息(ID,Name..当然还有一些更复杂的信息)--》在Controller中调用。

可是,我在Controll中调用的时候,实例一直是null,不知道为什么。

我的单例类:

 1  public class Instance
 2     {
 3         private static Instance _instance;
 4         private static object _lock = new object();
 5         private Instance()
 6         {
 7         }
 8         public static Instance GetInstance()
 9         {
10             if (_instance == null)
11             {
12                 lock (_lock)
13                 {
14                     if (_instance == null)
15                     {
16                         _instance = new Instance();
17                     }
18                 }
19             }
20             return _instance;
21         }
22 
23         /// <summary>
24         /// 三层的时候调用的Server地址
25         /// </summary>
26         private string _servicesAddresses;
27         public string ServicesAddresses
28         {
29             get
30             {
31                 _servicesAddresses = Phenix.Core.Net.NetConfig.ServicesAddresses;
32                 return _servicesAddresses;
33             }
34         }
35 
36         private string _currentServiceAddress;
37         public string CurrentServiceAddress
38         {
39             get { return _currentServiceAddress.Trim(); }
40             //get { return "127.0.0.1".Trim(); }
41             set { _currentServiceAddress = value; }
42         }
43 
44         /// <summary>
45         /// 当前登陆的用户,如果已经授权,返回当前用户,如果没有授权,返回null
46         /// </summary>
47         private User _currentUser;
48         public User CurrentUser
49         {
50             get
51             {
52                 //如果当前用户没有授权,则返回null
53                 if (HttpContext.Current.User.Identity.IsAuthenticated)
54                     return _currentUser;
55                 else
56                     return null;
57             }
58             //get
59             //{
60             //    return new User { Id = "ADMIN", Password = "ADMIN" };
61             //}
62             set { _currentUser = value; }
63         }
64     }

然后在登陆成功后给单例类赋值:

1   //将当前登陆信息保存到单例变量中
2             Instance instance = Instance.GetInstance();
3             instance.CurrentServiceAddress = user.ServicesAddresses;
4             instance.CurrentUser = user;

然后在Controller中调用:

1  var ss = Instance.GetInstance().CurrentUser;

这里获取到的一直是null。

纠结了好久,不知道什么地方出了问题,求指点。

问题补充:

注:我单步调试过,从给Instance赋值,一直到登陆成功单例类(Instance)中的_instance都是有值的,但是一进入到Controller的构造函数的时候,_instance就为null了。很奇怪,按道理讲static类型的_instance是不会重新变成null啊

Gamain的主页 Gamain | 菜鸟二级 | 园豆:357
提问于:2013-05-03 14:39
< >
分享
所有回答(1)
0

问题解决了吗?大牛

kobe工作室 | 园豆:202 (菜鸟二级) | 2015-06-18 16:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册