-1

我写了一个示例并在我的主机上进行了测试(它是共享的)。并在我的网络配置中放置一个 machineKey。我创建存储数据的树类型:

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {   
            Session["x"] = "A";
            HttpContext.Current.Application.Add("y", "B");
            Application["z"] = "C";
        }
    }

并将按钮放在我的表单上并在其事件中写入:

     protected void Button1_Click(object sender, EventArgs e)
       {
          try
          {
             Label1.Text = Session["x"].ToString();
         }
         catch (Exception err)
         {
             Label1.Text = err.Message;
         }

        try
        {
              Label2.Text = HttpContext.Current.Application["y"].ToString();
        }
        catch (Exception err)
        {
            Label2.Text = err.Message;

        }

        try
        {
            Label3.Text =  Application["z"].ToString();
        }
        catch (Exception err)
        {
            Label3.Text = err.Message;
        }


    }

当 iis 随时回收并丢弃任何缓存/内存内容时,我丢失了所有类型的所有数据。所有返回的对象引用未设置为对象的实例。

用户来想登录,现在我如何以及在哪里可以存储正确用户的 id 或用户名,直到 iis 回收我有我的数据并且可以实现用户已登录?cookie 是否可以很好地存储这些数据,例如用户的用户名和密码?

4

2 回答 2

0

您需要考虑使用更持久的位置来存储该信息,例如 SQL Server。这篇 Microsoft 文章介绍了如何配置您的站点以使用 SQL Server 存储会话状态。

还有很多其他博客文章解释了如何做到这一点,所以你不会摸不着头脑:)

编辑:好的,查看可用的会话状态模式,您可能需要查看StateServer模式,因为它确实支持在网络场环境中运行的 ASP.NET 站点。

作为参考,本文介绍了如何在 Web 场中使用 SQL Server 会话状态。

于 2012-09-17T21:31:03.177 回答
0

如果您可以将文件存储在服务器上,您可以尝试使用基于文件的会员系统提供程序

http://madskristensen.net/post/XML-membership-provider-for-ASPNET-20.aspx

于 2012-09-17T21:45:53.590 回答