Xml 如何在C(ASP.net)中使用SessionStateItemCollection

Xml 如何在C(ASP.net)中使用SessionStateItemCollection,xml,session,asp.net-2.0,c#-2.0,Xml,Session,Asp.net 2.0,C# 2.0,如果我将xml文件名->值的内容存储在会话集合中,那么在另一个页面(即不是下面脚本运行的页面)上访问它的最佳方式是什么 这只是在我要访问集合的每个页面上创建SessionStateItemCollection的新实例的工作吗 System.Xml.XmlDocument oXmlDoc = new System.Xml.XmlDocument(); oXmlDoc.Load(Server.MapPath("xml.xml")); //load XML file

如果我将xml文件名->值的内容存储在会话集合中,那么在另一个页面(即不是下面脚本运行的页面)上访问它的最佳方式是什么

这只是在我要访问集合的每个页面上创建SessionStateItemCollection的新实例的工作吗

System.Xml.XmlDocument oXmlDoc = new System.Xml.XmlDocument();

            oXmlDoc.Load(Server.MapPath("xml.xml")); //load XML file

            XmlNode root = oXmlDoc.DocumentElement;

            SessionStateItemCollection PSess = new SessionStateItemCollection(); //session collection

            for (int x = 0; x < root.ChildNodes.Count; x++) //loop through children and add to session
            {
                PSess[root.ChildNodes.Item(x).Name] = root.ChildNodes.Item(x).InnerText;  //add xml values to session 

            }

如果这是在ASP.NET中,那么我不明白为什么要创建新的SessionStateItemCollection对象。在这种情况下,您需要自己处理在页面之间持久化

ASP.NET通过页面的会话对象或HttpContext.Current对象提供对SessionStateItemCollection对象的访问,如果您希望从类使用此对象。您可以通过会话对象将键值对存储在其中,并在后续页面上从会话对象检索它们

我会重写你的代码如下

System.Xml.XmlDocument oXmlDoc = new System.Xml.XmlDocument();

oXmlDoc.Load(Server.MapPath("xml.xml")); //load XML file

XmlNode root = oXmlDoc.DocumentElement;

for (int x = 0; x < root.ChildNodes.Count; x++) //loop through children and add to session
{
    Session[root.ChildNodes.Item(x).Name] = root.ChildNodes.Item(x).InnerText;  //add xml values to session 
}
现在,您可以使用会话对象从另一个页面访问内容。以下代码将通过会话中存储的所有内容进行交互:

for (int i = 0; i < Session.Count; i++)
{
    Response.Write(Session.Keys[i] + "-" + Session[i].ToString());
}

谢谢,有趣的是,我删除了这一行,因为有人给了我一些关于sessioncollection的错误信息。