private string GetExceptionDetails(XmlValidatorException ex)
        {
            var sb = new StringBuilder();

            for (int i = 0; i < ex.ArgumentCount; i++)
            {
                sb.AppendLine(ex.GetArgument(i));
            }

            return(sb.ToString());
        }
        private IBaseMessage GetValidationErrorResponse(IPipelineContext pContext, IBaseMessage pInMsg, object epmRRCorrelationToken, object correlationToken, object reqRespTransmitPipelineID, XmlValidatorException ex)
        {
            var outMsg = pContext.GetMessageFactory().CreateMessage();

            outMsg.AddPart("Body", pInMsg.BodyPart, true);

            outMsg.Context.Promote(new ContextProperty(SystemProperties.RouteDirectToTP), true);
            outMsg.Context.Write(new ContextProperty(WCFProperties.OutboundHttpStatusCode), "400");
            outMsg.Context.Promote(new ContextProperty(SystemProperties.IsRequestResponse), true);
            outMsg.Context.Promote(new ContextProperty(SystemProperties.EpmRRCorrelationToken), epmRRCorrelationToken);
            outMsg.Context.Promote(new ContextProperty(SystemProperties.CorrelationToken), correlationToken);
            outMsg.Context.Promote(new ContextProperty(SystemProperties.ReqRespTransmitPipelineID), reqRespTransmitPipelineID);

            var ms = new MemoryStream();
            var sw = new StreamWriter(ms);

            sw.Write(GetExceptionDetails(ex));
            sw.Flush();
            ms.Seek(0, SeekOrigin.Begin);

            outMsg.BodyPart.Data = ms;

            return(outMsg);
        }