Exemple #1
0
        /// <summary>
        /// Saves the cache.
        /// </summary>
        /// <param name="root">The root.</param>
        /// <param name="context">The context.</param>
        static void SaveCache(XmlNode root, HttpContext context)
        {
            XmlNode session = root.AppendChild(root.OwnerDocument.CreateElement("cacheVariables"));

            foreach (DictionaryEntry entry in context.Cache)
            {
                string  key      = entry.Key.ToString();
                XmlNode variable = session.AppendChild(root.OwnerDocument.CreateElement("add"));
                variable.Attributes.Append(root.OwnerDocument.CreateAttribute("name")).Value = key;
                if (entry.Value == null)
                {
                    variable.Attributes.Append(root.OwnerDocument.CreateAttribute("value")).Value = "null";
                    continue;
                }
                Type variableType = entry.Value.GetType();
                variable.Attributes.Append(root.OwnerDocument.CreateAttribute("type")).Value = variableType.AssemblyQualifiedName;
                if (variableType.IsValueType || variableType == typeof(string))
                {
                    variable.Attributes.Append(root.OwnerDocument.CreateAttribute("value")).Value = Convert.ToString(entry.Value, CultureInfo.InvariantCulture);
                }
                else if (variableType.IsSerializable)
                {
                    variable.AppendChild(root.OwnerDocument.CreateCDataSection(BugSerializer.Serialize(entry.Value)));
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Saves the session.
        /// </summary>
        /// <param name="root">The root.</param>
        /// <param name="context">The context.</param>
        static void SaveSession(XmlNode root, HttpContext context)
        {
            if (context.Session == null)
            {
                return;
            }
            XmlNode session = root.AppendChild(root.OwnerDocument.CreateElement("sessionVariables"));

            session.Attributes.Append(root.OwnerDocument.CreateAttribute("mode")).Value     = context.Session.Mode.ToString();
            session.Attributes.Append(root.OwnerDocument.CreateAttribute("codePage")).Value = context.Session.CodePage.ToString(CultureInfo.InvariantCulture);
            foreach (string key in context.Session.Keys)
            {
                XmlNode variable = session.AppendChild(root.OwnerDocument.CreateElement("add"));
                variable.Attributes.Append(root.OwnerDocument.CreateAttribute("name")).Value = key;
                object value = context.Session[key];
                if (value == null)
                {
                    variable.Attributes.Append(root.OwnerDocument.CreateAttribute("value")).Value = "null";
                    continue;
                }
                Type variableType = value.GetType();
                variable.Attributes.Append(root.OwnerDocument.CreateAttribute("type")).Value = variableType.AssemblyQualifiedName;
                if (variableType.IsValueType || variableType == typeof(string))
                {
                    variable.Attributes.Append(root.OwnerDocument.CreateAttribute("value")).Value = Convert.ToString(value, CultureInfo.InvariantCulture);
                }
                else if (variableType.IsSerializable)
                {
                    variable.AppendChild(root.OwnerDocument.CreateCDataSection(BugSerializer.Serialize(value)));
                }
            }
        }
Exemple #3
0
 /// <summary>
 /// Saves the user.
 /// </summary>
 /// <param name="root">The root.</param>
 /// <param name="context">The context.</param>
 static void SaveUser(XmlNode root, HttpContext context)
 {
     if (context.User != null && context.User.GetType().IsSerializable)
     {
         XmlNode user = root.AppendChild(root.OwnerDocument.CreateElement("user"));
         user.Attributes.Append(root.OwnerDocument.CreateAttribute("name")).Value = context.User.Identity.Name;
         user.Attributes.Append(root.OwnerDocument.CreateAttribute("authenticationType")).Value = context.User.Identity.AuthenticationType;
         user.AppendChild(root.OwnerDocument.CreateCDataSection(BugSerializer.Serialize(context.User)));
     }
 }
Exemple #4
0
        /// <summary>
        /// Saves the exception.
        /// </summary>
        /// <param name="root">The root.</param>
        /// <param name="context">The context.</param>
        static void SaveException(XmlNode root, HttpContext context)
        {
            if (context.Error == null)
            {
                return;
            }
            XmlNode   exception     = root.AppendChild(root.OwnerDocument.CreateElement("exception"));
            Exception baseException = context.Error.GetBaseException();

            exception.Attributes.Append(root.OwnerDocument.CreateAttribute("type")).Value    = baseException.GetType().FullName;
            exception.Attributes.Append(root.OwnerDocument.CreateAttribute("message")).Value = baseException.Message;
            exception.Attributes.Append(root.OwnerDocument.CreateAttribute("source")).Value  = ExceptionHelper.GetRelevantSource(context.Error) ?? baseException.Source;
            exception.AppendChild(root.OwnerDocument.CreateCDataSection(BugSerializer.Serialize(context.Error)));
            ExceptionHelper.XmlSerializeStackTrace(baseException, root.AppendChild(root.OwnerDocument.CreateElement("stackTrace")));
        }
Exemple #5
0
        /// <summary>
        /// Saves the context.
        /// </summary>
        /// <param name="root">The root.</param>
        /// <param name="context">The context.</param>
        static void SaveContext(XmlNode root, HttpContext context)
        {
            XmlNode contextNode = root.AppendChild(root.OwnerDocument.CreateElement("contextVariables"));

            foreach (DictionaryEntry entry in context.Items)
            {
                Type    keyType  = entry.Key.GetType();
                XmlNode variable = contextNode.AppendChild(root.OwnerDocument.CreateElement("add"));
                if (keyType.IsValueType || keyType == typeof(string))
                {
                    variable.Attributes.Append(root.OwnerDocument.CreateAttribute("nameType")).Value = keyType.AssemblyQualifiedName;
                    variable.Attributes.Append(root.OwnerDocument.CreateAttribute("name")).Value     = Convert.ToString(entry.Key, CultureInfo.InvariantCulture);
                }
                else if (keyType.IsSerializable)
                {
                    variable.AppendChild(root.OwnerDocument.CreateElement("key")).AppendChild(root.OwnerDocument.CreateCDataSection(BugSerializer.Serialize(entry.Key)));
                }
                else
                {
                    variable.ParentNode.RemoveChild(variable);
                    continue;
                }
                if (entry.Value == null)
                {
                    variable.Attributes.Append(root.OwnerDocument.CreateAttribute("value")).Value = "null";
                    continue;
                }
                Type variableType = entry.Value.GetType();
                variable.Attributes.Append(root.OwnerDocument.CreateAttribute("type")).Value = variableType.AssemblyQualifiedName;
                if (variableType.IsValueType || variableType == typeof(string))
                {
                    variable.Attributes.Append(root.OwnerDocument.CreateAttribute("value")).Value = Convert.ToString(entry.Value, CultureInfo.InvariantCulture);
                }
                else if (variableType.IsSerializable)
                {
                    variable.AppendChild(root.OwnerDocument.CreateCDataSection(BugSerializer.Serialize(entry.Value)));
                }
            }
        }