Example #1
0
        public static String WriteSoapMessageStart(XmlWriter writer, Prefixes prefixes, WsXmlNamespaces additionalPrefixes,
            WsWsaHeader header, AppSequence appSequence)
        {
            String messageId = "urn:uuid:" + Guid.NewGuid();

            String xml =
                "<?xml version='1.0' encoding='UTF-8'?>" +
                "<soap:Envelope xmlns:soap='" + WsWellKnownUri.SoapNamespaceUri + "' " +
                "xmlns:wsa='" + WsWellKnownUri.WsaNamespaceUri_2005_08 + "' ";

            if ((prefixes & Prefixes.Wsdp) != Prefixes.None)
            {
                xml += "xmlns:wsdp='" + WsWellKnownUri.WsdpNamespaceUri + "' ";
            }

            if ((prefixes & Prefixes.Wse) != Prefixes.None)
            {
                xml += "xmlns:wse='" + WsWellKnownUri.WseNamespaceUri + "' ";
            }

            if ((prefixes & Prefixes.Wsx) != Prefixes.None)
            {
                xml += "xmlns:wsx='" + WsWellKnownUri.WsxNamespaceUri + "' ";
            }

            if ((prefixes & Prefixes.Wsd) != Prefixes.None || appSequence != null)
            {
                xml += "xmlns:wsd='" + WsWellKnownUri.WsdNamespaceUri + "' ";
            }

            if (additionalPrefixes != null)
            {
                int count = additionalPrefixes.Count;
                WsXmlNamespace current;
                for (int i = 0; i < count; i++)
                {
                    current = additionalPrefixes[i];
                    xml += "xmlns:" + current.Prefix + "='" + current.NamespaceURI + "' ";
                }
            }

            xml += ">" +
                "<soap:Header>" +
                    "<wsa:To soap:mustUnderstand=\"1\">" + header.To + "</wsa:To>" +
                    "<wsa:Action soap:mustUnderstand=\"1\">" + header.Action + "</wsa:Action>" +
                    "<wsa:MessageID>" + messageId + "</wsa:MessageID>";

            if (header.RelatesTo != null)
            {
                xml += "<wsa:RelatesTo>" + header.RelatesTo + "</wsa:RelatesTo>";
            }

            if (header.From != null)
            {
                xml += "<wsa:From><wsa:Address>" + header.From.Address.AbsoluteUri + "</wsa:Address></wsa:From>";
            }

            if (header.ReplyTo != null)
            {
                xml += "<wsa:ReplyTo><wsa:Address>" + header.ReplyTo.Address.AbsoluteUri + "</wsa:Address></wsa:ReplyTo>";
            }

            if (appSequence != null)
            {
                xml += "<wsd:AppSequence InstanceId='" + appSequence.InstanceId + "' " +
                    "SequenceId='" + appSequence.SequenceId + "' " +
                    "MessageNumber='" + appSequence.MessageNumber + "'/>";
            }

            writer.WriteRaw(xml);

            if (header.Any != null)
            {
                header.Any.WriteTo(writer);
            }

            writer.WriteRaw("</soap:Header><soap:Body>");

            return messageId;
        }