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; } }