Пример #1
0
        ///////////////////////////////////////////////////////////////////////////////////
        //These 2 implementations for IDispatchMessageInspector get called for every call
        object IDispatchMessageInspector.AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel, System.ServiceModel.InstanceContext instanceContext)
        {
            //log http request
            string msgName = "SOAPRequestMultispeak" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xml";

            LogHttpMessageRequest(msgName, ref request);

            //log original message
            LogMessage(msgName, ref request);

            LogEvent("MultispeakMessageInspector", "AfterReceiveRequest()", "Original Message: " + msgName);

            if (SOAPUtility.GetOperationName() == "StakedWorkOrderNotification")
            {
                //transform malformed Stakeout message
                request = MultispeakTransformer.Transform(ref request);

                //log transformed message
                msgName = "SOAPRequestMultispeakTransFormed" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xml";
                LogMessage(msgName, ref request);
                LogEvent("MultispeakMessageInspector", "AfterReceiveRequest()", "Transformed Malformed Message: " + msgName);
            }

            if (validateRequest)
            {
                // inspect the message. If a validation error occurs, the thrown fault exception bubbles up.
                SOAPMessageValidator smv = new SOAPMessageValidator(schemaSet, validateRequest, validateReply, isClientSide);
                smv.ValidateMessageBody(ref request, true);
                LogEvent("MultispeakMessageInspector", "AfterReceiveRequest()", "WSDL Schema Validated");
            }

            LogEvent("MultispeakMessageInspector", "AfterReceiveRequest()", "Completed");

            return("MyCustomToken");
        }
Пример #2
0
        public static Message Transform(ref Message OldMessage)
        {
            XmlDocument xmldoc = SOAPUtility.LoadMessageBodyBufferToXmlDocument(ref OldMessage);

            XmlUtility.RemoveAttributeFromXmlDocument(xmldoc, "xmlns", string.Empty);
            XmlUtility.RemoveNodeChildrenFromXmlDocument(xmldoc, "mapLocation");

            XmlDictionaryReader xr = XmlUtility.LoadXmlReader(xmldoc);

            Message msg = SOAPUtility.CreateNewMessageFromBodyContents(xr, ref OldMessage);

            return(msg);
        }