将对象添加到Web应用程序中的列表

时间:2015-06-02 12:39:14

标签: c# asp.net web-services list webmethod

我一直在尝试创建一个简单的Web应用程序来注册用户并使用列表保存他们的详细信息。问题是在第一次调用RegisterUser函数后成功添加用户后,在第二次调用中列表再次为空。它与函数是HTTP方法有什么关系吗?

代码:

def (sq = Proc.new).call(e) e ** 2 end; enum.map(sq)
# vs.
enum.map {|e| e ** 2 }

2 个答案:

答案 0 :(得分:2)

public class WS : System.Web.Services.WebService
{

    [WebMethod(EnableSession = true)]
    [ScriptMethod(UseHttpGet = true)]
    public void registerUser()
    {
        try
        {
            if(Session["users"] == null)
                Session["users"] = new List<User>();

            List<User> users = (List<User>)Session["users"];

            string s = HttpContext.Current.Request.Form[0].ToString();
            User tempUser = new User();
            tempUser = JsonConvert.DeserializeObject<User>(s);
            users.Add(tempUser);

            Session["users"] = users;
        }
        catch(Exception e)
        {
            HttpContext.Current.Response.Write(e.Message);
        }
    }
}

答案 1 :(得分:0)

每次创建users类的新实例时,都会实例化WS字段。要在调用之间保留数据,您需要将其设为static。但是,每次Web服务器服务重新启动时,您都将丢失数据,因此您可能应该继续查看数据库或其他持久性数据存储。

代码:

private static List<User> users = new List<User>(); // could probably be readonly too

如果这是一个安全解决方案,而不仅仅是数据收集练习,我会进一步建议重新考虑你在做什么。 .NET有一个可供使用的成员资格提供程序子系统。