【问题标题】:How to handle concurrent connections asp net (c#)如何处理asp net(c#)的并发连接
【发布时间】:2011-07-19 23:45:00
【问题描述】:

我在asp net 中编写了一个简单的webapp。我第一次浏览该程序时一切正常,但如果我再次去那里,它会使用我上次会话中的变量。

所以问题是

  1. 有没有办法纠正这个问题?

  2. 这与我如何制作公共变量有关吗?

  3. 能否将变量存储为 cookie,然后在页面关闭时将其删除?

这就是我创建公共变量的方式:

static class vars
{
    public static List<string> directory_names = new List<string>();
    public static List<string> directory = new List<string>();  
    public static int numvar = 0;
    //There are more but they all are made the same way
}

欢迎提出任何想法。

谢谢, 亚当

【问题讨论】:

    标签: c# asp.net session cookies session-cookies


    【解决方案1】:

    我们需要在这里解决几件事。

    首先,我认为涉及的代码比您提供的类要多。我认为您需要添加该内容,以便我们为您提供准确的答案。

    但是,从我从您提供的课程中可以看出,您特别做了一件事,那就是static 关键字。

    类和/或属性上的static 关键字意味着整个application domain 中只有一个实例。这意味着对您网站的所有请求都将共享您的 vars 类的值,因为只有一个实例。

    我建议您关注一些 ASP.NET 教程和视频,以了解 ASP.NET 的一些基本知识。从这里开始,他们有很好的材料:http://www.asp.net/get-started

    阅读更多关于静态关键字的信息:http://msdn.microsoft.com/en-us/library/98f28cdx(v=VS.100).aspx

    【讨论】:

      【解决方案2】:

      您应该避免使用静态变量,因为这意味着每个连接的用户的变量都是相同的(而且您可能会面临线程问题)。

      这是关于这个的链接:What is better: Static variable V.S. Asp.NET Application Session?

      【讨论】:

      • 那么从我读到的内容,我使用会话创建变量,然后每个登录的用户都会得到他们自己的一组变量?如果我想错了,请纠正我。
      • @Adam8797 - 是的,会话变量是,呃...每个会话。会话在超时之前一直有效。这是一篇关于 ASP.NET 会话的详尽文章:codeproject.com/KB/aspnet/ExploringSession.aspx
      猜你喜欢
      • 2021-04-20
      • 2013-08-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 2017-02-28
      相关资源
      最近更新 更多