Ejemplo n.º 1
0
 // helper function that allows us to pass dummy subcodes around but clear them before they get to the user
 internal void ClearSubcode()
 {
     if (subcode != null)
     {
         subcode = subcode.Subcode;
     }
 }
Ejemplo n.º 2
0
 /// <include file='doc\SoapException.uex' path='docs/doc[@for="SoapException.SoapException7"]/*' />
 // SOAP12: made this internal
 internal SoapException(string message, XmlQualifiedName code, string actor, string role, System.Xml.XmlNode detail, SoapFaultSubcode subcode, Exception innerException) : base(message, innerException)
 {
     this.code    = code;
     this.actor   = actor;
     this.role    = role;
     this.detail  = detail;
     this.subcode = subcode;
 }
Ejemplo n.º 3
0
        private SoapFaultSubcode ReadSoap12FaultCodesRecursive(XmlReader reader, int depth)
        {
            if (depth > 100)
            {
                return(null);
            }
            if (reader.IsEmptyElement)
            {
                reader.Skip();
                return(null);
            }
            XmlQualifiedName code    = null;
            SoapFaultSubcode subcode = null;

            reader.ReadStartElement();
            reader.MoveToContent();
            while (reader.NodeType != XmlNodeType.EndElement && reader.NodeType != XmlNodeType.None)
            {
                if (reader.NamespaceURI == Soap12.Namespace || reader.NamespaceURI == null || reader.NamespaceURI.Length == 0)
                {
                    if (reader.LocalName == Soap12.FaultCodeValue)
                    {
                        code = ReadFaultCode(reader);
                    }
                    else if (reader.LocalName == Soap12.FaultSubcode)
                    {
                        subcode = ReadSoap12FaultCodesRecursive(reader, depth + 1);
                    }
                    else
                    {
                        reader.Skip();
                    }
                }
                else
                {
                    reader.Skip();
                }
                reader.MoveToContent();
            }
            while (reader.NodeType == XmlNodeType.Whitespace)
            {
                reader.Skip();
            }
            if (reader.NodeType == XmlNodeType.None)
            {
                reader.Skip();
            }
            else
            {
                reader.ReadEndElement();
            }
            return(new SoapFaultSubcode(code, subcode));
        }
		public SoapHeaderException (
			string message, 
			XmlQualifiedName code, 
			string actor, 
			string role, 
			SoapFaultSubcode subcode, 
			Exception innerException)
			
		: base (message, code, actor, role, null, subcode, innerException)
		{
			
		}
Ejemplo n.º 5
0
        private XmlQualifiedName ReadSoap12FaultCode(XmlReader reader, out SoapFaultSubcode subcode)
        {
            ArrayList        codes = new ArrayList();
            SoapFaultSubcode code  = ReadSoap12FaultCodesRecursive(reader, 0);

            if (code == null)
            {
                subcode = null;
                return(null);
            }
            else
            {
                subcode = code.Subcode;
                return(code.Code);
            }
        }
Ejemplo n.º 6
0
        SoapException ReadSoapException(XmlReader reader)
        {
            XmlQualifiedName faultCode   = XmlQualifiedName.Empty;
            string           faultString = null;
            string           faultActor  = null;
            string           faultRole   = null;
            XmlNode          detail      = null;
            SoapFaultSubcode subcode     = null;
            bool             soap12      = (reader.NamespaceURI == Soap12.Namespace);

            if (reader.IsEmptyElement)
            {
                reader.Skip();
            }
            else
            {
                reader.ReadStartElement();
                reader.MoveToContent();
                while (reader.NodeType != XmlNodeType.EndElement && reader.NodeType != XmlNodeType.None)
                {
                    if (reader.NamespaceURI == Soap.Namespace || reader.NamespaceURI == Soap12.Namespace || reader.NamespaceURI == null || reader.NamespaceURI.Length == 0)
                    {
                        if (reader.LocalName == Soap.FaultCode || reader.LocalName == Soap12.FaultCode)
                        {
                            if (soap12)
                            {
                                faultCode = ReadSoap12FaultCode(reader, out subcode);
                            }
                            else
                            {
                                faultCode = ReadFaultCode(reader);
                            }
                        }
                        else if (reader.LocalName == Soap.FaultString || reader.LocalName == Soap12.FaultReason)
                        {
                            faultString = reader.ReadElementString();
                        }
                        else if (reader.LocalName == Soap.FaultActor || reader.LocalName == Soap12.FaultNode)
                        {
                            faultActor = reader.ReadElementString();
                        }
                        else if (reader.LocalName == Soap.FaultDetail || reader.LocalName == Soap12.FaultDetail)
                        {
                            detail = new XmlDocument().ReadNode(reader);
                        }
                        else if (reader.LocalName == Soap12.FaultRole)
                        {
                            faultRole = reader.ReadElementString();
                        }
                        else
                        {
                            reader.Skip();
                        }
                    }
                    else
                    {
                        reader.Skip();
                    }
                    reader.MoveToContent();
                }
                while (reader.NodeType == XmlNodeType.Whitespace)
                {
                    reader.Skip();
                }
                if (reader.NodeType == XmlNodeType.None)
                {
                    reader.Skip();
                }
                else
                {
                    reader.ReadEndElement();
                }
            }
            if (detail != null)
            {
                return(new SoapException(faultString, faultCode, faultActor, faultRole, detail, subcode, null));
            }
            else
            {
                return(new SoapHeaderException(faultString, faultCode, faultActor, faultRole, subcode, null));
            }
        }
 /// <include file='doc\SoapHeaderException.uex' path='docs/doc[@for="SoapHeaderException.SoapHeaderException4"]/*' />
 // SOAP12: made this internal
 internal SoapHeaderException(string message, XmlQualifiedName code, string actor, string role, SoapFaultSubcode subcode, Exception innerException)
     : base(message, code, actor, role, null, subcode, innerException)
 {
 }
		public SoapFaultSubcode (XmlQualifiedName code, SoapFaultSubcode subcode)
		{
			_code = code;
			_subcode = subcode;
		}
Ejemplo n.º 9
0
 /// <include file='doc\SoapFaultCodes.uex' path='docs/doc[@for="SoapFaultSubcode.SoapFaultSubcode1"]/*' />
 public SoapFaultSubcode(XmlQualifiedName code, SoapFaultSubcode subcode)
 {
     this.code    = code;
     this.subcode = subcode;
 }
 private static void WriteFaultCodeValue(XmlWriter writer, XmlQualifiedName code, SoapFaultSubcode subcode)
 {
     if (code == null)
     {
         return;
     }
     writer.WriteStartElement(Soap12.FaultCodeValue, Soap12.Namespace);
     if (code.Namespace != null && code.Namespace.Length > 0 && writer.LookupPrefix(code.Namespace) == null)
     {
         writer.WriteAttributeString("xmlns", "q0", null, code.Namespace);
     }
     writer.WriteQualifiedName(code.Name, code.Namespace);
     writer.WriteEndElement(); // </value>
     if (subcode != null)
     {
         writer.WriteStartElement(Soap12.FaultSubcode, Soap12.Namespace);
         WriteFaultCodeValue(writer, subcode.Code, subcode.Subcode);
         writer.WriteEndElement(); // </subcode>
     }
 }
Ejemplo n.º 11
0
		public SoapException (string message, XmlQualifiedName code, string actor, string role, string lang, XmlNode detail, SoapFaultSubcode subcode, Exception innerException)
		{
			this.code = code;
			this.subcode = subcode;
			this.detail = detail;
			this.actor = actor;
			this.role = role;
			this.lang = lang;
		}
Ejemplo n.º 12
0
		public SoapException (string message, XmlQualifiedName code, SoapFaultSubcode subcode)
			: base (message)
		{
			this.code = code;
			this.subcode = subcode;
		}
Ejemplo n.º 13
0
 /// <include file='doc\SoapException.uex' path='docs/doc[@for="SoapException.SoapException6"]/*' />
 // SOAP12: made this internal
 internal SoapException(string message, XmlQualifiedName code, SoapFaultSubcode subcode) : base(message)
 {
     this.code    = code;
     this.subcode = subcode;
 }