private XmlReader ProcessResponse(byte[] response, String messageID, String action)
        {
            WsWsaHeader header = new WsWsaHeader();

            XmlReader reader = WsSoapMessageParser.ParseSoapMessage(response, ref header, m_version);

            if (header.Action == m_version.AddressingNamespace + "/fault")
            {
                WsFault.ParseFaultResponseAndThrow(reader);
            }
            else if (header.Action != m_version.EventingNamespace + "/" + action)
            {
                throw new XmlException();
            }

            // Make sure this response matches the request
            if (header.RelatesTo != messageID)
            {
                throw new XmlException();
            }

            return(reader);
        }
        private XmlReader ProcessResponse(byte[] response, String messageID, String action)
        {
            WsWsaHeader header;
            XmlReader   reader;

            reader = WsSoapMessageParser.ParseSoapMessage(response, out header);

            try
            {
                if (
                    (header.Action == WsWellKnownUri.WsaNamespaceUri_2004_08 + "/fault") ||
                    (header.Action == WsWellKnownUri.WsaNamespaceUri_2005_08 + "/fault")
                    )
                {
                    WsFault.ParseFaultResponseAndThrow(reader);
                }
                else if (header.Action != WsWellKnownUri.WseNamespaceUri + "/" + action)
                {
                    throw new XmlException();
                }

                // Make sure this response matches the request
                if (header.RelatesTo != messageID)
                {
                    throw new XmlException("Invalid message ID in response. Id does not match request ID.");
                }

                return(reader);
            }
            catch
            {
                // if something's wrong, close the reader, and rethrow the exception
                reader.Close();
                throw;
            }
        }