0

我试着让我的头脑做一些不同于我通常做的事情。在我设置会话值并通过我的网站重用这些值之前。但我开始问自己,我可以使用属性值来代替吗?这是我正在考虑的,它似乎工作得很好。

C#, 4.0

代替:

string strpersonid = userinfolist[0].ToString();
HttpContext.Current.Session.Add("personid", strpersonid);

或者:

Session["sosuserid"] = "00001";

为什么不使用:default.aspx-

private static string userid;
        public static string _UserID
        {
            get
            {
                return userid;
            }
            set
            {
                userid = value;
            }
        }

 _UserID = upUser.Name.ToString();

(来自广告电话)

一旦用户提交表单,我就有了一个用于我的总线逻辑的类,它可以重用:

public class buslogic : _default

String userID = _UserID;

使其静态保持线程安全,对吗?

想法,想法?谢谢。

更新:如果有帮助,default.aspx 页面让用户提交给自己(default.aspx.cs,代码隐藏)。该页面在用户表单提交时使用属性值(调用 busLogic 类,我认为这是问题所在)。

我还发现了这个: 从源页面获取公共属性值

4

1 回答 1

1

使用HttpContext.SessionorHttpContext.Items为每个请求和线程提供一个单独的后备存储。

这使您的代码在多个线程上运行时可以正常工作,并确保每个请求都有自己的值。

如果您改为使用单个static字段,则所有请求都将使用相同的字段,事情会变得非常混乱。

于 2013-05-07T15:00:23.773 回答