ASP.net:单例类,每个请求只实例化一次?
发布时间:2020-12-16 09:23:00 所属栏目:asp.Net 来源:网络整理
导读:我有一个名为UserContext的类,它跟踪我网站上给定用户的活动.它应该是一个单例类(每个用户只有一个实例).在 Windows窗体应用程序中,我可以写这样的东西: Class UserContext Public Shared Current As New UserContext() Private Sub New(appName As String)
我有一个名为UserContext的类,它跟踪我网站上给定用户的活动.它应该是一个单例类(每个用户只有一个实例).在
Windows窗体应用程序中,我可以写这样的东西:
Class UserContext Public Shared Current As New UserContext() Private Sub New(appName As String) [...] End Class 但是在ASP.net应用程序上,这将在所有当前用户之间共享. 如果这个类只在一个Page实体中使用,我可以将UserContext实例存储在一个Page变量中 – 它不一定需要在回发中存活.但是其他实体(不了解Page)也调用UserContext,我希望它们都被赋予相同的实例. 我该怎么做才能确保每个http请求(或每个用户)只实例化一次类?我可以使用缓存吗? Public Shared Function GetContext() As UserContext If HttpContext.Current.Cache("CurrentUserContext") Is Nothing Then HttpContext.Current.Cache("CurrentUserContext") = New UserContext() Return HttpContext.Current.Cache("CurrentUserContext") End Function 可能会议状态是更好的选择吗? 缓存和会话状态都存在回发 – 是否有另一个选项随每个新请求重置? 谢谢你的帮助! 解决方法
HttpContext.Current.Cache将在所有用户之间共享. HttpContext.Current.Session是每个用户,但后续请求仍然存在.
你需要HttpContext.Current.Items: Public Shared Function GetContext() As UserContext If HttpContext.Current.Items("CurrentUserContext") Is Nothing Then HttpContext.Current.Items("CurrentUserContext") = New UserContext() Return HttpContext.Current.Items("CurrentUserContext") End Function 这将确保每个请求和每个用户缓存存储的安全性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-2 – 后退按钮不请求asp.net mvc get方法
- asp.net-mvc – ASP.NET MVC中的Page.EnableSessionState等
- 在基本控制器中覆盖ASP.NET MVC中的OnAuthorization
- asp.net – 如何从内容页面访问母版页控件
- asp.net-mvc – ASP.NET向razor添加id ActionLink
- asp.net-mvc – MVC ModelMetaData属性和格式化Date的问题
- .Net Core微服务入门全纪录(完结)——Ocelot与Swagger
- 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持
- asp.net – 在Web窗体应用程序中包含MVC 3视图
- asp.net – 解析美国邮政地址的免费API?
推荐文章
站长推荐
- asp.net-mvc – 如何在网站上重新创建电子表格或
- asp.net-mvc – 如何在asp.net mvc中使用jquery设
- asp.net-mvc-2 – 如何在ASP.NET MVC2中为Html.L
- asp.net-mvc – 当使用AutoMapper / AutoMapView
- asp.net-mvc – 用于MVC不引人注目的远程验证的事
- C#进阶系列——WebApi 接口参数不再困惑:传参详
- asp.net – 错误4005表单身份验证失败 – 提供的
- asp.net-mvc – 当前上下文中不存在名称“ViewBa
- asp.net – @ Html.EditorForModel()下拉列表
- asp.net-mvc – 我可以从动作过滤器返回动作结果
热点阅读