/// <summary> /// Writes the autodiscover SOAP request. /// </summary> /// <param name="requestUrl">Request URL.</param> /// <param name="writer">The writer.</param> internal void WriteSoapRequest( Uri requestUrl, EwsServiceXmlWriter writer) { writer.WriteStartElement(XmlNamespace.Soap, XmlElementNames.SOAPEnvelopeElementName); writer.WriteAttributeValue("xmlns", EwsUtilities.AutodiscoverSoapNamespacePrefix, EwsUtilities.AutodiscoverSoapNamespace); writer.WriteAttributeValue("xmlns", EwsUtilities.WSAddressingNamespacePrefix, EwsUtilities.WSAddressingNamespace); writer.WriteAttributeValue("xmlns", EwsUtilities.EwsXmlSchemaInstanceNamespacePrefix, EwsUtilities.EwsXmlSchemaInstanceNamespace); if (writer.RequireWSSecurityUtilityNamespace) { writer.WriteAttributeValue("xmlns", EwsUtilities.WSSecurityUtilityNamespacePrefix, EwsUtilities.WSSecurityUtilityNamespace); } writer.WriteStartElement(XmlNamespace.Soap, XmlElementNames.SOAPHeaderElementName); if (this.Service.Credentials != null) { this.Service.Credentials.EmitExtraSoapHeaderNamespaceAliases(writer.InternalWriter); } writer.WriteElementValue( XmlNamespace.Autodiscover, XmlElementNames.RequestedServerVersion, this.Service.RequestedServerVersion.ToString()); writer.WriteElementValue( XmlNamespace.WSAddressing, XmlElementNames.Action, this.GetWsAddressingActionName()); writer.WriteElementValue( XmlNamespace.WSAddressing, XmlElementNames.To, requestUrl.AbsoluteUri); this.WriteExtraCustomSoapHeadersToXml(writer); if (this.Service.Credentials != null) { this.Service.Credentials.SerializeWSSecurityHeaders(writer.InternalWriter); } this.Service.DoOnSerializeCustomSoapHeaders(writer.InternalWriter); writer.WriteEndElement(); // soap:Header writer.WriteStartElement(XmlNamespace.Soap, XmlElementNames.SOAPBodyElementName); this.WriteBodyToXml(writer); writer.WriteEndElement(); // soap:Body writer.WriteEndElement(); // soap:Envelope writer.Flush(); }