internal override void WriteFault(XmlWriter writer, SoapException soapException, HttpStatusCode statusCode) { if ((statusCode == HttpStatusCode.InternalServerError) && (soapException != null)) { SoapServerMessage message = base.ServerProtocol.Message; writer.WriteStartDocument(); writer.WriteStartElement("soap", "Envelope", "http://schemas.xmlsoap.org/soap/envelope/"); writer.WriteAttributeString("xmlns", "soap", null, "http://schemas.xmlsoap.org/soap/envelope/"); writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); writer.WriteAttributeString("xmlns", "xsd", null, "http://www.w3.org/2001/XMLSchema"); if (base.ServerProtocol.ServerMethod != null) { SoapHeaderHandling.WriteHeaders(writer, base.ServerProtocol.ServerMethod.outHeaderSerializer, message.Headers, base.ServerProtocol.ServerMethod.outHeaderMappings, SoapHeaderDirection.Fault, base.ServerProtocol.ServerMethod.use == SoapBindingUse.Encoded, base.ServerType.serviceNamespace, base.ServerType.serviceDefaultIsEncoded, "http://schemas.xmlsoap.org/soap/envelope/"); } else { SoapHeaderHandling.WriteUnknownHeaders(writer, message.Headers, "http://schemas.xmlsoap.org/soap/envelope/"); } writer.WriteStartElement("Body", "http://schemas.xmlsoap.org/soap/envelope/"); writer.WriteStartElement("Fault", "http://schemas.xmlsoap.org/soap/envelope/"); writer.WriteStartElement("faultcode", ""); XmlQualifiedName name = TranslateFaultCode(soapException.Code); if (((name.Namespace != null) && (name.Namespace.Length > 0)) && (writer.LookupPrefix(name.Namespace) == null)) { writer.WriteAttributeString("xmlns", "q0", null, name.Namespace); } writer.WriteQualifiedName(name.Name, name.Namespace); writer.WriteEndElement(); writer.WriteStartElement("faultstring", ""); if ((soapException.Lang != null) && (soapException.Lang.Length != 0)) { writer.WriteAttributeString("xml", "lang", "http://www.w3.org/XML/1998/namespace", soapException.Lang); } writer.WriteString(base.ServerProtocol.GenerateFaultString(soapException)); writer.WriteEndElement(); string actor = soapException.Actor; if (actor.Length > 0) { writer.WriteElementString("faultactor", "", actor); } if (!(soapException is SoapHeaderException)) { if (soapException.Detail == null) { writer.WriteStartElement("detail", ""); writer.WriteEndElement(); } else { soapException.Detail.WriteTo(writer); } } writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndElement(); writer.Flush(); } }
internal override void WriteFault(XmlWriter writer, SoapException soapException) { writer.WriteStartDocument(); writer.WriteStartElement("soap", Soap.Envelope, Soap12.Namespace); writer.WriteAttributeString("xmlns", "soap", null, Soap12.Namespace); writer.WriteAttributeString("xmlns", "xsi", null, XmlSchema.InstanceNamespace); writer.WriteAttributeString("xmlns", "xsd", null, XmlSchema.Namespace); if (ServerProtocol.ServerMethod != null) { SoapHeaderHandling.WriteHeaders(writer, ServerProtocol.ServerMethod.outHeaderSerializer, ServerProtocol.Message.Headers, ServerProtocol.ServerMethod.outHeaderMappings, SoapHeaderDirection.Fault, ServerProtocol.ServerMethod.use == SoapBindingUse.Encoded, ServerType.serviceNamespace, ServerType.serviceDefaultIsEncoded, Soap12.Namespace); } else { SoapHeaderHandling.WriteUnknownHeaders(writer, ServerProtocol.Message.Headers, Soap12.Namespace); } writer.WriteStartElement(Soap.Body, Soap12.Namespace); writer.WriteStartElement(Soap.Fault, Soap12.Namespace); writer.WriteStartElement(Soap12.FaultCode, Soap12.Namespace); WriteFaultCodeValue(writer, TranslateFaultCode(soapException.Code), soapException.Subcode); writer.WriteEndElement(); // </faultcode> writer.WriteElementString(Soap12.FaultReason, Soap12.Namespace, ServerProtocol.GenerateFaultString(soapException)); // Only write an actor element if the actor was specified (it's optional for end-points) string actor = soapException.Actor; if (actor.Length > 0) { writer.WriteElementString(Soap12.FaultNode, Soap12.Namespace, actor); } string role = soapException.Role; if (role.Length > 0) { writer.WriteElementString(Soap12.FaultRole, Soap12.Namespace, role); } // Only write a FaultDetail element if exception is related to the body (not a header) if (!(soapException is SoapHeaderException)) { if (soapException.Detail == null) { writer.WriteStartElement(Soap12.FaultDetail, Soap12.Namespace); writer.WriteEndElement(); } else { soapException.Detail.WriteTo(writer); } } writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndElement(); writer.Flush(); }
internal override void WriteFault(XmlWriter writer, SoapException soapException) { SoapServerMessage message = ServerProtocol.Message; writer.WriteStartDocument(); writer.WriteStartElement("soap", Soap.Envelope, Soap.Namespace); writer.WriteAttributeString("xmlns", "soap", null, Soap.Namespace); writer.WriteAttributeString("xmlns", "xsi", null, XmlSchema.InstanceNamespace); writer.WriteAttributeString("xmlns", "xsd", null, XmlSchema.Namespace); if (ServerProtocol.ServerMethod != null) { SoapHeaderHandling.WriteHeaders(writer, ServerProtocol.ServerMethod.outHeaderSerializer, message.Headers, ServerProtocol.ServerMethod.outHeaderMappings, SoapHeaderDirection.Fault, ServerProtocol.ServerMethod.use == SoapBindingUse.Encoded, ServerType.serviceNamespace, ServerType.serviceDefaultIsEncoded, Soap.Namespace); } else { SoapHeaderHandling.WriteUnknownHeaders(writer, message.Headers, Soap.Namespace); } writer.WriteStartElement(Soap.Body, Soap.Namespace); writer.WriteStartElement(Soap.Fault, Soap.Namespace); writer.WriteStartElement(Soap.FaultCode, ""); XmlQualifiedName code = TranslateFaultCode(soapException.Code); 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(); writer.WriteElementString(Soap.FaultString, "", ServerProtocol.GenerateFaultString(soapException)); // Only write an actor element if the actor was specified (it's optional for end-points) string actor = soapException.Actor; if (actor.Length > 0) { writer.WriteElementString(Soap.FaultActor, "", actor); } // Only write a FaultDetail element if exception is related to the body (not a header) if (!(soapException is SoapHeaderException)) { if (soapException.Detail == null) { writer.WriteStartElement(Soap.FaultDetail, ""); writer.WriteEndElement(); } else { soapException.Detail.WriteTo(writer); } } writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndElement(); writer.Flush(); }
internal override void WriteFault(XmlWriter writer, SoapException soapException, HttpStatusCode statusCode) { if ((statusCode == HttpStatusCode.InternalServerError) && (soapException != null)) { writer.WriteStartDocument(); writer.WriteStartElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope"); writer.WriteAttributeString("xmlns", "soap", null, "http://www.w3.org/2003/05/soap-envelope"); writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); writer.WriteAttributeString("xmlns", "xsd", null, "http://www.w3.org/2001/XMLSchema"); if (base.ServerProtocol.ServerMethod != null) { SoapHeaderHandling.WriteHeaders(writer, base.ServerProtocol.ServerMethod.outHeaderSerializer, base.ServerProtocol.Message.Headers, base.ServerProtocol.ServerMethod.outHeaderMappings, SoapHeaderDirection.Fault, base.ServerProtocol.ServerMethod.use == SoapBindingUse.Encoded, base.ServerType.serviceNamespace, base.ServerType.serviceDefaultIsEncoded, "http://www.w3.org/2003/05/soap-envelope"); } else { SoapHeaderHandling.WriteUnknownHeaders(writer, base.ServerProtocol.Message.Headers, "http://www.w3.org/2003/05/soap-envelope"); } writer.WriteStartElement("Body", "http://www.w3.org/2003/05/soap-envelope"); writer.WriteStartElement("Fault", "http://www.w3.org/2003/05/soap-envelope"); writer.WriteStartElement("Code", "http://www.w3.org/2003/05/soap-envelope"); WriteFaultCodeValue(writer, TranslateFaultCode(soapException.Code), soapException.SubCode); writer.WriteEndElement(); writer.WriteStartElement("Reason", "http://www.w3.org/2003/05/soap-envelope"); writer.WriteStartElement("Text", "http://www.w3.org/2003/05/soap-envelope"); writer.WriteAttributeString("xml", "lang", "http://www.w3.org/XML/1998/namespace", System.Web.Services.Res.GetString("XmlLang")); writer.WriteString(base.ServerProtocol.GenerateFaultString(soapException)); writer.WriteEndElement(); writer.WriteEndElement(); string actor = soapException.Actor; if (actor.Length > 0) { writer.WriteElementString("Node", "http://www.w3.org/2003/05/soap-envelope", actor); } string role = soapException.Role; if (role.Length > 0) { writer.WriteElementString("Role", "http://www.w3.org/2003/05/soap-envelope", role); } if (!(soapException is SoapHeaderException)) { if (soapException.Detail == null) { writer.WriteStartElement("Detail", "http://www.w3.org/2003/05/soap-envelope"); writer.WriteEndElement(); } else { soapException.Detail.WriteTo(writer); } } writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndElement(); writer.Flush(); } }