我在我的asp.net网站上使用了一个单例类来提供用户信息。
我想知道,如果我把这个网站放在网上,当用户开始登录时,这个类只会将数据存储给一个用户。
这是我的班级:
# Reproducible Example!
df <- data.frame(a=c(rep(12345,3),rep(44444,2),55555),
b=c("John","Mary and Bob","Ben","Jim","Larry & Meg","Tommy")
)
couples <- which(grepl("&| and ",df$b,ignore.case=T))
df_couples <- df[couples,][!duplicated(df$a[couples]),]
df_singles <- df[-couples,][!duplicated(df$a[-couples]),]
rbind(df_couples, df_singles[!df_singles$a %in% df_couples$a,])
#
# a b
# 2 12345 Mary and Bob
# 5 44444 Larry & Meg
# 6 55555 Tommy
答案 0 :(得分:0)
如果您的应用程序在Web场方案中使用,则只有您的类的多个实例。请参阅此主题:Are static class instances unique to a request or a server in ASP.NET?
答案 1 :(得分:0)
当用户开始登录时,此类将存储数据 只有一个用户。
您的应用程序中只存在一个User实例。
在Singleton中存储每个用户信息对于Web应用程序来说是一个非常非常糟糕的主意。为什么?的
多个用户请求您的Web应用程序,他们都将共享同一个User实例。我保证这不是你想要的。
理想情况下,在Web应用程序中,您需要创建 Principal 对象,并将其存储在 HttpContext 中。
仅供参考: 我们在Web应用程序中使用Singleton来存储应用程序开始直到结束时使用的信息(大多数情况下永远不会更改)。
答案 2 :(得分:0)
C#中的静态字段(我相信所有.NET语言),例如用于保存User
类的单例实例的静态字段,在AppDomain
内是“唯一的”。 / p>
当且仅当您拥有多个AppDomain时,无论是在同一进程中,在另一个进程中,还是在另一台计算机上(例如在Web场中),正如William在answer中指出的那样,可能有多个实例。