ASP.NET C#静态变量是全局的?
发布时间:2020-12-15 18:34:01 所属栏目:asp.Net 来源:网络整理
导读:今天我发布了一个小型的asp.net beta web应用程序,允许内部人员修改一些产品信息。我们开始遇到用户覆盖彼此产品信息的问题,即使每个工作人员正在编辑完全不同的行(产品)。 在谷歌搜索后,我想我知道发生了什么,它与使用静态变量有关,下面是一个很简单的
今天我发布了一个小型的asp.net beta web应用程序,允许内部人员修改一些产品信息。我们开始遇到用户覆盖彼此产品信息的问题,即使每个工作人员正在编辑完全不同的行(产品)。
在谷歌搜索后,我想我知道发生了什么,它与使用静态变量有关,下面是一个很简单的例子: // EditProductGroup.aspx.cs public partial class EditProductGroup : System.Web.UI.Page { private static int _groupId = 0; protected void Page_Load(object sender,EventArgs e) { _groupId = Convert.ToInt16(Request.QueryString["GroupID"]); // get existing ProductGroup information from database using //_groupId to find the row and populate textboxes } private void saveProductGroupData() { // when user hits 'save changes' button,update row //where the primary key column 'ProductGroupID' matches _groupId in the table } } 所以,根据我的研究,整个应用程序实际上存在一个静态变量,这意味着如果多个用户正在使用应用程序,他们将有效地为“_groupId”读取相同的“值”,在某些情况下实际设置它以不同的值导致页面的另一个用户的实例将数据保存到错误的行(ProductGroupId)。 我的意图是静态变量与其他用户隔离,而不应该是 – 每个用户都有自己的页面实例,因此他们自己的“_groupId”变量的实例。 幸运的是,它们都是在一个开发者/分期数据库上而不是活的数据库。我不知道我是否只需要删除’static’关键字来停止所有人设置/读取的变量。 有什么想法吗?谢谢 解决方法
是的,在ASP.NET中,静态字段的生命周期是针对应用程序域(请注意,这对于通用类型有所不同)。
我建议使用服务器Session来存储要与客户端浏览器会话的实例(用户登录)关联的数据。 Session["_groupID"] = Convert.ToInt16(Request.QueryString["GroupID"]); 您可以通过以下方式检索它: short groupID = Convert.ToInt16(Session["_groupID"]); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 实现ASP.NET多文件上传程序代码
- asp.net – 如何限制文本框中允许的字符数?
- asp.net-mvc – 如何在ASP.NET MVC中实现流畅的api?
- asp.net – 不引用MVC的AllowHtml属性
- asp.net-mvc – AntiForgeryToken登录后无效
- asp.net – 用于Web应用程序的实体框架过度杀毒?
- 具有虚拟目录的ASP.net母版页中的基本URL
- asp.net – 如何在HTML标记中阅读web.config APP键设置
- asp.net-mvc – ASP.NET MVC4 CustomErrors DefaultRedirec
- 一步步搭建自己的博客 .NET版(2、评论功能)
推荐文章
站长推荐
- 实体框架 – EF 6 Code First迁移警告或阻止破坏
- 即使ReadOnly设置为false,ASP.NET GridView中的C
- asp.net-mvc – 是否有一个ASP.NET MVC HtmlHelp
- asp.net-mvc – ASP.NET MVC中的Cookie管理
- asp.net-mvc – 断言操作重定向到正确的操作/路由
- asp.net – 从SyndicationContent读取内容文本
- asp.net-mvc – ASP.NET MVC V2 – 好友类
- asp.net AjaxControlToolKit--TabContainer控件的
- asp.net-mvc – 如何填充/验证您的ViewModels?
- Scaffolding Template on Asp.Net Core Ra
热点阅读