C# 为什么在某些浏览器中,会话对象的值是错误的?

C# 为什么在某些浏览器中,会话对象的值是错误的?,c#,asp.net,C#,Asp.net,我正在为基于mojoportal的iphone优化网站编写一个亚洲语言学习模块(工作正在进行,英语资源未完全翻译:) 这是一个简单的“猜怎么读这个”游戏,正确答案存储在会话对象中 我不明白为什么,但是,特别是使用Safari,用户将获得其他人的会话值 这是代码的摘录(我删除了一些东西,翻译了变量) 受保护的无效页面加载(对象发送方,事件参数e) { 如果(!Page.IsPostBack) { ... generateradom(); } } 受保护的void generateradom() {

我正在为基于mojoportal的iphone优化网站编写一个亚洲语言学习模块(工作正在进行,英语资源未完全翻译:)

这是一个简单的“猜怎么读这个”游戏,正确答案存储在会话对象中

我不明白为什么,但是,特别是使用Safari,用户将获得其他人的会话值

这是代码的摘录(我删除了一些东西,翻译了变量)

受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!Page.IsPostBack)
{
...
generateradom();
}
}
受保护的void generateradom()
{
int i,j=0,livello=5,chance=0;
System.Random acaso=新的Random();
...

然而(j你如何存储会话状态?Cookie?数据库?等等…我有很多问题(通常是IE 8)浏览器缓存页面和Cookie的方式。通常,更改浏览器中的相应设置可以解决问题。我不知道这是否有帮助。为了使其更健壮,我必须找到一种方法,在其中一个设置不正确时通知用户。

如何存储会话状态?Cookie?数据库等等…我有很多问题(通常是IE 8)浏览器缓存页面和Cookie的方式。通常,更改浏览器中的相应设置可以解决问题。我不知道这是否有帮助。为了使其更健壮,我必须找到一种方法,在这些设置之一不正确时通知用户。

使用HiddenFields我“解决”了问题(但我不喜欢那种方式)

使用隐藏字段我“解决”了这个问题(但我不喜欢那种方式)

hmmm,我的意思是,会话[“名称”]是如何存储在服务器上的?我认为它存储在服务器上,由保存在cookie上的标识符检索,或者在url中传递值,如果cookie支持它是禁用的。不是这样吗?会话[“stuff”]=“other stuff”;我通常在(Session[“stuff”]==null)Session.Add(“stuff”,value);else Session[“stuff”]=value;只做这个Session[txtName.Text]=txtnvalue.Text;请看:嗯,我的意思是,Session[“name”]怎么样存储在服务器上?我认为它存储在服务器上,由保存在cookie上的标识符检索,或者如果cookie支持,则在url中传递值。这不是这样的吗?会话[“stuff”]=“other stuff”;如果(会话[“stuff”]=“null”)会话,我通常会这样做。添加(“stuff”,value);否则会话[“stuff”]=value;只需执行此会话[txtName.Text]=txtValue.Text;请参阅:
    protected void Page_Load(object sender, EventArgs e)

    {

    if (!Page.IsPostBack)
        {
        ...
        generateRandom();
        }
    }

    protected void generateRandom()
    {
        int i, j = 0, livello = 5, chance = 0;
        System.Random acaso = new Random();
        ...
        while (j <= 0)
        {
            j = acaso.Next((Convert.ToInt32(TextBoxlunghezza.Text) + 1));
        }
        ...
        for (int k = 0; k < j; k++)
        {
            i = acaso.Next(livello);
            Session["randomLetters"] += (globals.asianCharacters[i]);
            ...
        }
        ...
    }


    protected void AnswerButton_Click(object sender, EventArgs e)
    {
        string compare = Server.HtmlEncode(InputTextBox.Text.ToLower());
        if (compare == "")
        {
            Label1.Text = ("You did not write anything");
            return;
        }
        if (Session["randomLetters"].ToString() != compare)
        {
            Label1.Text = ("Wrong!" + Session["randomLetters"]);
        }
        else
        {
            Label1.Text = ("Right!" + Session["randomLetters"]);
        }
     ...
    }