using System; using System.Web; using System.Web.Handlers; using System.Web.Hosting; using System.Net; using System.Web.Services.Protocols; using System.Messaging; using System.Text; using System.IO; using System.Xml; using Microsoft.Web.Services2; namespace newtelligence.Services.Core { internal class MessageQueueWebResponse : WebResponse { private static byte[] exceptionMessage; static MessageQueueWebResponse() { MemoryStream bufferStream = new MemoryStream(); XmlTextWriter envelopeStream = new XmlTextWriter(bufferStream, System.Text.Encoding.UTF8); SoapEnvelope exceptionEnvelope = new SoapEnvelope(); XmlElement bodyElement = exceptionEnvelope.CreateBody(); XmlElement faultElement = exceptionEnvelope.CreateElement("Fault",Soap.NamespaceURI); bodyElement.AppendChild(faultElement); XmlElement faultCode = exceptionEnvelope.CreateElement("faultcode",Soap.NamespaceURI); faultCode.InnerText = "Client.OneWayCall"; faultElement.AppendChild(faultCode); XmlElement faultString = exceptionEnvelope.CreateElement("faultstring",Soap.NamespaceURI); faultString.InnerText = "Cannot return synchronous responses through MSMQ. The remote action may have executed and is not the cause of this failure."; faultElement.AppendChild(faultString); exceptionEnvelope.WriteTo( envelopeStream ); envelopeStream.Flush(); bufferStream.Flush(); exceptionMessage = bufferStream.ToArray(); } public override Stream GetResponseStream() { return new MemoryStream(exceptionMessage); } public override long ContentLength { get { return exceptionMessage.Length; } set { throw new NotSupportedException(); } } public override string ContentType { get { return "text/xml"; } set { throw new NotSupportedException(); } } public override WebHeaderCollection Headers { get { return new WebHeaderCollection(); } } } }